diff --git a/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/README.md b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/README.md index 4a51fb2..c73626c 100644 --- a/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/README.md +++ b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/README.md @@ -80,36 +80,10 @@ ORDER BY ## Setting up the Backfill Project To grant dataset creation permissions and to get access to `payload_bytes_error`: https://github.com/mozilla-services/cloudops-infra/pull/6055 +This step provided the `payload_bytes_error` data as well as `firefox_desktop` datasets. ## Reingest Using Decoder -To start, we need to create the temporary datasets and tables to use as dataflow input, output, and error. -We can do that by running the script at -[`mirror-prod-tables.sh`](mirror-prod-tables.sh). - -This will create the datasets `firefox_desktop_metrics_output`, `firefox_desktop_metrics_deduped`, and -`payload_bytes_error_firefox_desktop_metrics`. - -We will then create a `payload_bytes_error`-like table with only the rows that we want to reprocess: - -```sql -CREATE TABLE - moz-fx-data-backfill-1.payload_bytes_error_firefox_desktop_metrics.structured_input -LIKE - moz-fx-data-backfill-1.payload_bytes_error_firefox_desktop_metrics.structured -AS -( - SELECT - * - FROM - `moz-fx-data-shared-prod.payload_bytes_error.structured` - WHERE - DATE(submission_timestamp) BETWEEN "2024-10-25" AND "2024-11-06" - AND error_message LIKE 'org.everit.json.schema.ValidationException: #/metrics/% expected maxLength: 61, actual: %' - AND document_namespace = "firefox-desktop" -) -``` - The script in [start_dataflow.sh](start_dataflow.sh) will start the dataflow job when run from the `ingestion-beam/` directory in [`gcp-ingestion`](https://github.com/mozilla/gcp-ingestion/tree/main/ingestion-beam). @@ -122,12 +96,10 @@ The dataflow output will have duplicate document ids, so we need to dedupe befor similar to copy_deduplicate. We can also check if any document ids already exist in the stable table, just as a safeguard. There are no automation pings, so there's no need to filter like in copy_deduplicate. -This will be split into two steps for easier validation. +This will be split into two steps for easier validation. Set the destination table to `moz-fx-data-backfill-1.firefox_desktop_stable.metrics_v1` and run the following query to deduplicate pings: ```sql -CREATE TABLE `moz-fx-data-backfill-1.firefox_desktop_metrics_deduped.metrics_v1` -LIKE `moz-fx-data-backfill-1.firefox_desktop_metrics_output.metrics_v1` AS ( - WITH existing_doc_ids AS ( +WITH existing_doc_ids AS ( SELECT document_id FROM @@ -139,7 +111,7 @@ LIKE `moz-fx-data-backfill-1.firefox_desktop_metrics_output.metrics_v1` AS ( SELECT * FROM - `moz-fx-data-backfill-1.firefox_desktop_metrics_output.metrics_v1` + `moz-fx-data-backfill-1.firefox_desktop_live.metrics_v1` WHERE DATE(submission_timestamp) BETWEEN "2024-10-25" AND "2024-11-06" QUALIFY @@ -155,70 +127,17 @@ LIKE `moz-fx-data-backfill-1.firefox_desktop_metrics_output.metrics_v1` AS ( (document_id) WHERE existing_doc_ids.document_id IS NULL -); -``` - -```sql -INSERT INTO - `moz-fx-data-shared-prod.firefox_desktop_stable.metrics_v1` -SELECT - * -FROM - `moz-fx-data-backfill-1.firefox_desktop_metrics_deduped.metrics_v1` -WHERE - DATE(submission_timestamp) BETWEEN "2024-10-25" AND "2024-11-06"; ``` -We can dedupe and insert into a staging table with a statement like: -```sql -CREATE TABLE `moz-fx-data-backfill-1.firefox_desktop_metrics_deduped.metrics_v1` -LIKE `moz-fx-data-backfill-1.firefox_desktop_metrics_output.metrics_v1` AS ( - WITH existing_doc_ids AS ( - SELECT - document_id - FROM - `moz-fx-data-shared-prod.firefox_desktop_stable.metrics_v1` - WHERE - -- look for days after 2024-05-01 to account for late-arriving duplicates - DATE(submission_timestamp) BETWEEN "2024-10-25" AND "2024-11-06" - ), - new_rows AS ( - SELECT - * - FROM - `moz-fx-data-backfill-1.firefox_desktop_metrics_output.metrics_v1` - WHERE - DATE(submission_timestamp) BETWEEN "2024-10-25" AND "2024-11-06" - QUALIFY - ROW_NUMBER() OVER (PARTITION BY document_id ORDER BY submission_timestamp) = 1 - ) - SELECT - new_rows.* - FROM - new_rows - LEFT JOIN - existing_doc_ids - USING - (document_id) - WHERE - existing_doc_ids.document_id IS NULL -); +The `_stable` tables that get automatically created by the DSRE process have schemas that are incompatible with those in `moz-fx-data-shared-prod`. The order of columns does in some cases not match. + +One option would be to create the table schemas from the `_stable` tables in `moz-fx-data-shared-prod` initially. In this backfill, `insert_to_prod.py` will generated the `INSERT` statement that explicitly selects fields in the right order for them to be written back to the destination table: + +``` +python3 insert_to_prod.py ``` -Final counts: +The result `insert.sql` statement needs to be run by DSRE. - - -Final insert: - -```sql -INSERT INTO - `moz-fx-data-shared-prod.firefox_desktop_stable.metrics_v1` -SELECT - * -FROM - `moz-fx-data-backfill-1.firefox_desktop_metrics_deduped.metrics_v1` -WHERE - DATE(submission_timestamp) BETWEEN "2024-10-25" AND "2024-11-06"; -``` +Final insert resulted in 441,929 rows being added. diff --git a/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/backfill_metrics.yaml b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/backfill_metrics.yaml new file mode 100644 index 0000000..2de89f2 --- /dev/null +++ b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/backfill_metrics.yaml @@ -0,0 +1,13729 @@ +fields: +- mode: NULLABLE + name: additional_properties + type: STRING +- fields: + - mode: NULLABLE + name: android_sdk_version + type: STRING + - mode: NULLABLE + name: app_build + type: STRING + - mode: NULLABLE + name: app_channel + type: STRING + - mode: NULLABLE + name: app_display_version + type: STRING + - mode: NULLABLE + name: architecture + type: STRING + - mode: NULLABLE + name: build_date + type: STRING + - mode: NULLABLE + name: client_id + type: STRING + - mode: NULLABLE + name: device_manufacturer + type: STRING + - mode: NULLABLE + name: device_model + type: STRING + - mode: NULLABLE + name: first_run_date + type: STRING + - mode: NULLABLE + name: locale + type: STRING + - mode: NULLABLE + name: os + type: STRING + - mode: NULLABLE + name: os_version + type: STRING + - mode: NULLABLE + name: session_count + type: INTEGER + - mode: NULLABLE + name: session_id + type: STRING + - mode: NULLABLE + name: telemetry_sdk_build + type: STRING + - mode: NULLABLE + name: windows_build_number + type: INTEGER + mode: NULLABLE + name: client_info + type: RECORD +- mode: NULLABLE + name: document_id + type: STRING +- fields: + - mode: NULLABLE + name: category + type: STRING + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: STRING + mode: REPEATED + name: extra + type: RECORD + - mode: NULLABLE + name: name + type: STRING + - mode: NULLABLE + name: timestamp + type: INTEGER + mode: REPEATED + name: events + type: RECORD +- fields: + - fields: + - mode: NULLABLE + name: city + type: STRING + - mode: NULLABLE + name: country + type: STRING + - mode: NULLABLE + name: db_version + type: STRING + - mode: NULLABLE + name: subdivision1 + type: STRING + - mode: NULLABLE + name: subdivision2 + type: STRING + mode: NULLABLE + name: geo + type: RECORD + - fields: + - mode: NULLABLE + name: date + type: STRING + - mode: NULLABLE + name: dnt + type: STRING + - mode: NULLABLE + name: x_debug_id + type: STRING + - mode: NULLABLE + name: x_foxsec_ip_reputation + type: STRING + - mode: NULLABLE + name: x_lb_tags + type: STRING + - mode: NULLABLE + name: x_pingsender_version + type: STRING + - mode: NULLABLE + name: x_source_tags + type: STRING + - mode: NULLABLE + name: x_telemetry_agent + type: STRING + mode: NULLABLE + name: header + type: RECORD + - fields: + - mode: NULLABLE + name: db_version + type: STRING + - mode: NULLABLE + name: name + type: STRING + - mode: NULLABLE + name: organization + type: STRING + mode: NULLABLE + name: isp + type: RECORD + - fields: + - mode: NULLABLE + name: browser + type: STRING + - mode: NULLABLE + name: os + type: STRING + - mode: NULLABLE + name: version + type: STRING + mode: NULLABLE + name: user_agent + type: RECORD + mode: NULLABLE + name: metadata + type: RECORD +- fields: + - fields: + - mode: NULLABLE + name: a11y_always_underline_links + type: BOOLEAN + - mode: NULLABLE + name: a11y_backplate + type: BOOLEAN + - mode: NULLABLE + name: a11y_invert_colors + type: BOOLEAN + - mode: NULLABLE + name: a11y_use_system_colors + type: BOOLEAN + - mode: NULLABLE + name: bounce_tracking_protection_enabled_at_startup + type: BOOLEAN + - mode: NULLABLE + name: bounce_tracking_protection_enabled_dry_run_mode_at_startup + type: BOOLEAN + - mode: NULLABLE + name: browser_backup_enabled + type: BOOLEAN + - mode: NULLABLE + name: browser_backup_pswd_encrypted + type: BOOLEAN + - mode: NULLABLE + name: browser_backup_scheduler_enabled + type: BOOLEAN + - mode: NULLABLE + name: browser_startup_abouthome_cache_shutdownwrite + type: BOOLEAN + - mode: NULLABLE + name: browser_ui_proton_enabled + type: BOOLEAN + - mode: NULLABLE + name: contentblocking_cryptomining_blocking_enabled + type: BOOLEAN + - mode: NULLABLE + name: contentblocking_fingerprinting_blocking_enabled + type: BOOLEAN + - mode: NULLABLE + name: cookie_banners_service_detect_only + type: BOOLEAN + - mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_cache + type: BOOLEAN + - mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_cookies + type: BOOLEAN + - mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_downloads + type: BOOLEAN + - mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_formdata + type: BOOLEAN + - mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_history + type: BOOLEAN + - mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_offline_apps + type: BOOLEAN + - mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_open_windows + type: BOOLEAN + - mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_sessions + type: BOOLEAN + - mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_site_settings + type: BOOLEAN + - mode: NULLABLE + name: datasanitization_privacy_sanitize_sanitize_on_shutdown + type: BOOLEAN + - mode: NULLABLE + name: dom_parentprocess_private_window_used + type: BOOLEAN + - mode: NULLABLE + name: extensions_use_remote_policy + type: BOOLEAN + - mode: NULLABLE + name: extensions_use_remote_pref + type: BOOLEAN + - mode: NULLABLE + name: fog_failed_idle_registration + type: BOOLEAN + - mode: NULLABLE + name: genai_chatbot_enabled + type: BOOLEAN + - mode: NULLABLE + name: genai_chatbot_shortcuts + type: BOOLEAN + - mode: NULLABLE + name: genai_chatbot_shortcuts_custom + type: BOOLEAN + - mode: NULLABLE + name: genai_chatbot_sidebar + type: BOOLEAN + - mode: NULLABLE + name: gfx_os_compositor + type: BOOLEAN + - mode: NULLABLE + name: gfx_status_headless + type: BOOLEAN + - mode: NULLABLE + name: gfx_supports_hdr + type: BOOLEAN + - mode: NULLABLE + name: gfx_tmp_writable + type: BOOLEAN + - mode: NULLABLE + name: gifft_validation_main_ping_assembling + type: BOOLEAN + - mode: NULLABLE + name: glean_core_migration_successful + type: BOOLEAN + - mode: NULLABLE + name: glean_error_preinit_tasks_timeout + type: BOOLEAN + - mode: NULLABLE + name: installation_first_seen_admin_user + type: BOOLEAN + - mode: NULLABLE + name: installation_first_seen_default_path + type: BOOLEAN + - mode: NULLABLE + name: installation_first_seen_from_msi + type: BOOLEAN + - mode: NULLABLE + name: installation_first_seen_install_existed + type: BOOLEAN + - mode: NULLABLE + name: installation_first_seen_other_inst + type: BOOLEAN + - mode: NULLABLE + name: installation_first_seen_other_msix_inst + type: BOOLEAN + - mode: NULLABLE + name: installation_first_seen_profdir_existed + type: BOOLEAN + - mode: NULLABLE + name: installation_first_seen_silent + type: BOOLEAN + - mode: NULLABLE + name: migration_uninstaller_profile_refresh + type: BOOLEAN + - mode: NULLABLE + name: networking_http3_enabled + type: BOOLEAN + - mode: NULLABLE + name: newtab_handoff_preference_enabled + type: BOOLEAN + - mode: NULLABLE + name: os_environment_is_admin_without_uac + type: BOOLEAN + - mode: NULLABLE + name: os_environment_is_kept_in_dock + type: BOOLEAN + - mode: NULLABLE + name: os_environment_is_taskbar_pinned + type: BOOLEAN + - mode: NULLABLE + name: os_environment_is_taskbar_pinned_private + type: BOOLEAN + - mode: NULLABLE + name: pictureinpicture_toggle_enabled + type: BOOLEAN + - mode: NULLABLE + name: policies_is_enterprise + type: BOOLEAN + - mode: NULLABLE + name: preferences_prefs_file_was_invalid + type: BOOLEAN + - mode: NULLABLE + name: shopping_settings_auto_open_user_disabled + type: BOOLEAN + - mode: NULLABLE + name: shopping_settings_component_opted_out + type: BOOLEAN + - mode: NULLABLE + name: shopping_settings_disabled_ads + type: BOOLEAN + - mode: NULLABLE + name: shopping_settings_has_onboarded + type: BOOLEAN + - mode: NULLABLE + name: shopping_settings_nimbus_disabled_shopping + type: BOOLEAN + - mode: NULLABLE + name: sslkeylogging_enabled + type: BOOLEAN + - mode: NULLABLE + name: startup_is_cold + type: BOOLEAN + - mode: NULLABLE + name: startup_is_restored_by_macos + type: BOOLEAN + - mode: NULLABLE + name: telemetry_data_upload_optin + type: BOOLEAN + - mode: NULLABLE + name: widget_dark_mode + type: BOOLEAN + mode: NULLABLE + name: boolean + type: RECORD + - fields: + - mode: NULLABLE + name: apz_scrollwheel_overshoot + type: INTEGER + - mode: NULLABLE + name: bloburl_resolve_stopped + type: INTEGER + - mode: NULLABLE + name: bounce_tracking_protection_purge_count_classified_tracker + type: INTEGER + - mode: NULLABLE + name: browser_engagement_active_ticks + type: INTEGER + - mode: NULLABLE + name: browser_engagement_bookmarks_toolbar_bookmark_added + type: INTEGER + - mode: NULLABLE + name: browser_engagement_bookmarks_toolbar_bookmark_opened + type: INTEGER + - mode: NULLABLE + name: browser_engagement_tab_open_event_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_tab_pinned_event_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_tab_reload_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_tab_unload_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_unfiltered_uri_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_uri_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_uri_count_normal_mode + type: INTEGER + - mode: NULLABLE + name: browser_engagement_vertical_tab_open_event_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_vertical_tab_pinned_event_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_window_open_event_count + type: INTEGER + - mode: NULLABLE + name: browser_ui_interaction_all_tabs_panel_dragstart_tab_event_count + type: INTEGER + - mode: NULLABLE + name: browser_ui_interaction_textrecognition_error + type: INTEGER + - mode: NULLABLE + name: cert_signature_cache_total + type: INTEGER + - mode: NULLABLE + name: cert_trust_cache_total + type: INTEGER + - mode: NULLABLE + name: contentblocking_trackers_blocked_count + type: INTEGER + - mode: NULLABLE + name: cookie_banners_cookie_injection_fail + type: INTEGER + - mode: NULLABLE + name: crash_submission_failure + type: INTEGER + - mode: NULLABLE + name: crash_submission_pending + type: INTEGER + - mode: NULLABLE + name: crash_submission_success + type: INTEGER + - mode: NULLABLE + name: dom_contentprocess_build_id_mismatch + type: INTEGER + - mode: NULLABLE + name: dom_contentprocess_build_id_mismatch_false_positive + type: INTEGER + - mode: NULLABLE + name: dom_contentprocess_os_priority_change_considered + type: INTEGER + - mode: NULLABLE + name: dom_contentprocess_os_priority_lowered + type: INTEGER + - mode: NULLABLE + name: dom_contentprocess_os_priority_raised + type: INTEGER + - mode: NULLABLE + name: dotprint_android_dialog_requested + type: INTEGER + - mode: NULLABLE + name: dotprint_requested + type: INTEGER + - mode: NULLABLE + name: downloads_file_opened + type: INTEGER + - mode: NULLABLE + name: downloads_panel_shown + type: INTEGER + - mode: NULLABLE + name: findbar_find_next + type: INTEGER + - mode: NULLABLE + name: findbar_find_prev + type: INTEGER + - mode: NULLABLE + name: findbar_highlight_all + type: INTEGER + - mode: NULLABLE + name: findbar_match_case + type: INTEGER + - mode: NULLABLE + name: findbar_match_diacritics + type: INTEGER + - mode: NULLABLE + name: findbar_shown + type: INTEGER + - mode: NULLABLE + name: findbar_whole_words + type: INTEGER + - mode: NULLABLE + name: fog_inits_during_shutdown + type: INTEGER + - mode: NULLABLE + name: fog_ipc_flush_failures + type: INTEGER + - mode: NULLABLE + name: fog_ipc_replay_failures + type: INTEGER + - mode: NULLABLE + name: fog_ipc_shutdown_registration_failures + type: INTEGER + - mode: NULLABLE + name: gfx_skipped_composites + type: INTEGER + - mode: NULLABLE + name: glean_error_io + type: INTEGER + - mode: NULLABLE + name: glean_error_preinit_tasks_overflow + type: INTEGER + - mode: NULLABLE + name: glean_time_invalid_timezone_offset + type: INTEGER + - mode: NULLABLE + name: glean_upload_deleted_pings_after_quota_hit + type: INTEGER + - mode: NULLABLE + name: glean_upload_in_flight_pings_dropped + type: INTEGER + - mode: NULLABLE + name: glean_upload_missing_send_ids + type: INTEGER + - mode: NULLABLE + name: glean_upload_pending_pings + type: INTEGER + - mode: NULLABLE + name: glean_validation_app_forceclosed_count + type: INTEGER + - mode: NULLABLE + name: glean_validation_baseline_ping_count + type: INTEGER + - mode: NULLABLE + name: glean_validation_foreground_count + type: INTEGER + - mode: NULLABLE + name: hls_canplay_requested + type: INTEGER + - mode: NULLABLE + name: hls_canplay_supported + type: INTEGER + - mode: NULLABLE + name: httpsfirst_downgraded + type: INTEGER + - mode: NULLABLE + name: httpsfirst_downgraded_schemeless + type: INTEGER + - mode: NULLABLE + name: httpsfirst_upgraded + type: INTEGER + - mode: NULLABLE + name: httpsfirst_upgraded_schemeless + type: INTEGER + - mode: NULLABLE + name: ls_request_recv_cancellation + type: INTEGER + - mode: NULLABLE + name: ls_request_send_cancellation + type: INTEGER + - mode: NULLABLE + name: mathml_doc_count + type: INTEGER + - mode: NULLABLE + name: media_element_in_page_count + type: INTEGER + - mode: NULLABLE + name: messaging_system_glean_ping_for_ping_failures + type: INTEGER + - mode: NULLABLE + name: netwerk_parent_connect_timeout + type: INTEGER + - mode: NULLABLE + name: networking_cookie_count_invalid_first_party_partitioned_in_db + type: INTEGER + - mode: NULLABLE + name: networking_doh_heuristics_attempts + type: INTEGER + - mode: NULLABLE + name: networking_doh_heuristics_pass_count + type: INTEGER + - mode: NULLABLE + name: networking_os_socket_limit_reached + type: INTEGER + - mode: NULLABLE + name: networking_residual_cache_folder_count + type: INTEGER + - mode: NULLABLE + name: networking_set_cookie + type: INTEGER + - mode: NULLABLE + name: networking_set_invalid_first_party_partitioned_cookie + type: INTEGER + - mode: NULLABLE + name: opaque_response_blocking_cross_origin_opaque_response_count + type: INTEGER + - mode: NULLABLE + name: opaque_response_blocking_javascript_validation_count + type: INTEGER + - mode: NULLABLE + name: page_icon_fit_icon_count + type: INTEGER + - mode: NULLABLE + name: page_icon_small_icon_count + type: INTEGER + - mode: NULLABLE + name: pdfjs_editing_highlight_color_changed + type: INTEGER + - mode: NULLABLE + name: pdfjs_editing_highlight_deleted + type: INTEGER + - mode: NULLABLE + name: pdfjs_editing_highlight_edited + type: INTEGER + - mode: NULLABLE + name: pdfjs_editing_highlight_print + type: INTEGER + - mode: NULLABLE + name: pdfjs_editing_highlight_save + type: INTEGER + - mode: NULLABLE + name: pdfjs_editing_highlight_thickness_changed + type: INTEGER + - mode: NULLABLE + name: pdfjs_editing_highlight_toggle_visibility + type: INTEGER + - mode: NULLABLE + name: pdfjs_used + type: INTEGER + - mode: NULLABLE + name: ping_centre_send_failures + type: INTEGER + - mode: NULLABLE + name: places_sponsored_visit_no_triggering_url + type: INTEGER + - mode: NULLABLE + name: power_cpu_time_bogus_values + type: INTEGER + - mode: NULLABLE + name: power_gpu_time_bogus_values + type: INTEGER + - mode: NULLABLE + name: power_total_cpu_time_ms + type: INTEGER + - mode: NULLABLE + name: power_total_gpu_time_ms + type: INTEGER + - mode: NULLABLE + name: power_total_thread_wakeups + type: INTEGER + - mode: NULLABLE + name: printing_dialog_opened_via_preview_tm + type: INTEGER + - mode: NULLABLE + name: printing_dialog_via_preview_cancelled_tm + type: INTEGER + - mode: NULLABLE + name: printing_preview_cancelled_tm + type: INTEGER + - mode: NULLABLE + name: printing_preview_opened_tm + type: INTEGER + - mode: NULLABLE + name: printing_silent_print + type: INTEGER + - mode: NULLABLE + name: rtcrtpsender_count + type: INTEGER + - mode: NULLABLE + name: rtcrtpsender_count_setparameters_compat + type: INTEGER + - mode: NULLABLE + name: sct_signature_cache_total + type: INTEGER + - mode: NULLABLE + name: shopping_product_page_visits + type: INTEGER + - mode: NULLABLE + name: tls_certificate_verifications + type: INTEGER + - mode: NULLABLE + name: translations_requests_count + type: INTEGER + - mode: NULLABLE + name: urlbar_abandonment_count + type: INTEGER + - mode: NULLABLE + name: urlbar_autofill_deletion + type: INTEGER + - mode: NULLABLE + name: urlbar_engagement_count + type: INTEGER + - mode: NULLABLE + name: urlbar_impression_autofill_about + type: INTEGER + - mode: NULLABLE + name: urlbar_impression_autofill_adaptive + type: INTEGER + - mode: NULLABLE + name: urlbar_impression_autofill_origin + type: INTEGER + - mode: NULLABLE + name: urlbar_impression_autofill_other + type: INTEGER + - mode: NULLABLE + name: urlbar_impression_autofill_url + type: INTEGER + - mode: NULLABLE + name: urlbar_persistedsearchterms_revert_by_popup_count + type: INTEGER + - mode: NULLABLE + name: urlbar_persistedsearchterms_view_count + type: INTEGER + - mode: NULLABLE + name: urlbar_trending_block + type: INTEGER + - mode: NULLABLE + name: urlbar_zeroprefix_abandonment + type: INTEGER + - mode: NULLABLE + name: urlbar_zeroprefix_engagement + type: INTEGER + - mode: NULLABLE + name: urlbar_zeroprefix_exposure + type: INTEGER + - mode: NULLABLE + name: web_notification_insecure_context_permission_request + type: INTEGER + - mode: NULLABLE + name: web_push_detected_duplicated_message_ids + type: INTEGER + - mode: NULLABLE + name: webauthn_create_failure + type: INTEGER + - mode: NULLABLE + name: webauthn_create_passkey + type: INTEGER + - mode: NULLABLE + name: webauthn_create_success + type: INTEGER + - mode: NULLABLE + name: webauthn_get_failure + type: INTEGER + - mode: NULLABLE + name: webauthn_get_success + type: INTEGER + - mode: NULLABLE + name: webrtcdtls_client_handshake_started_counter + type: INTEGER + - mode: NULLABLE + name: webrtcdtls_server_handshake_started_counter + type: INTEGER + mode: NULLABLE + name: counter + type: RECORD + - fields: + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: bounce_tracking_protection_num_hosts_per_purge_run + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_compression_brotli_saved_bytes + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_compression_zlib_saved_bytes + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_compression_zstd_saved_bytes + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cookie_banners_click_query_selector_run_count_per_window_frame + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cookie_banners_click_query_selector_run_count_per_window_top_level + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cookie_banners_click_query_selector_run_duration_per_window_frame + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cookie_banners_click_query_selector_run_duration_per_window_top_level + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_event_page_running_time + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: fog_validation_gvsv_number_of_unique_site_origins_all_tabs + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_document_site_origins + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_per_document_site_origins + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geolocation_accuracy + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_checkerboard_peak_pixel_count + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_checkerboard_severity + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_frame_time_from_paint + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_frame_time_from_vsync + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_frame_time_with_svg + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_frame_time_without_resource_upload + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_frame_time_without_upload + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_tls_early_data_bytes_written + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_access_fixup_diff + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_chips_partition_limit_overflow + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_count_part_by_key + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_count_partitioned + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_count_total + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_count_unpart_by_key + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_count_unpartitioned + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_creation_fixup_diff + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_purge_entry_max + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_purge_max + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_1_download_throughput + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_1_upload_throughput + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_1_upload_throughput_100 + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_1_upload_throughput_10_50 + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_1_upload_throughput_50_100 + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_2_download_throughput + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_2_upload_throughput + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_2_upload_throughput_100 + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_2_upload_throughput_10_50 + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_2_upload_throughput_50_100 + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_download_throughput + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_download_throughput_100 + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_download_throughput_10_50 + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_download_throughput_50_100 + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_ecn_ce_ect0_ratio_received + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_ecn_ce_ect0_ratio_sent + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_loss_ratio + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_udp_datagram_segments_received + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_upload_throughput + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_upload_throughput_100 + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_upload_throughput_10_50 + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_upload_throughput_50_100 + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: pdfjs_editing_highlight_thickness + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: pdfjs_time_to_view + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_clone_deserialize_items + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: power_battery_percentage_when_user_active + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: timer_thread_timers_fired_per_wakeup + type: RECORD + mode: NULLABLE + name: custom_distribution + type: RECORD + - fields: + - mode: NULLABLE + name: background_update_time_last_update_scheduled + type: STRING + - mode: NULLABLE + name: blocklist_last_modified_rs_addons_mblf + type: STRING + - mode: NULLABLE + name: blocklist_mlbf_generation_time + type: STRING + - mode: NULLABLE + name: blocklist_mlbf_softblocks_generation_time + type: STRING + - mode: NULLABLE + name: blocklist_mlbf_stash_time_newest + type: STRING + - mode: NULLABLE + name: blocklist_mlbf_stash_time_oldest + type: STRING + - mode: NULLABLE + name: glean_validation_first_run_hour + type: STRING + mode: NULLABLE + name: datetime + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: STRING + mode: REPEATED + name: jwe + type: RECORD + - fields: + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: a11y_theme + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: browser_ui_mirror_for_toolbar_widgets + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: cookie_banners_normal_window_service_mode + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: cookie_banners_private_window_service_mode + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: data_storage_migration + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: geolocation_linux_provider + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: media_playback_device_hardware_decoder_support + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: media_video_hardware_decoding_support + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: media_video_hd_hardware_decoding_support + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: networking_doh_heuristic_ever_tripped + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: os_environment_is_default_handler + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: oskeystore_self_test + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: pdfjs_image_alt_text_edit + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: startup_run_from_dmg_install_outcome + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: widget_ime_name_on_linux + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: widget_ime_name_on_mac + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: widget_ime_name_on_windows + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: widget_ime_name_on_windows_inserted_crlf + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: widget_pointing_devices + type: RECORD + mode: NULLABLE + name: labeled_boolean + type: RECORD + - fields: + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_a1lx + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_a1op + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_alpha + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_aom_decode_error + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_bit_depth + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_cicp_cp + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_cicp_mc + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_cicp_tc + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_clap + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_colr + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_decode_result + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_decoder + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_grid + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_ipro + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_ispe + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_lsel + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_pasp + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_pixi + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_yuv_color_space + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: bounce_tracking_protection_purge_count + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_about_home + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_about_newtab + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_contextmenu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_searchbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_urlbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_urlbar_handoff + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_urlbar_persisted + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_urlbar_searchmode + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_webextension + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_sessionrestore_interstitial + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_about_home + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_about_newtab + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_contextmenu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_reload + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_searchbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_system + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_tabhistory + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_unknown + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_urlbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_urlbar_handoff + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_urlbar_persisted + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_urlbar_searchmode + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_webextension + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_about_home + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_about_newtab + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_contextmenu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_reload + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_searchbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_system + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_tabhistory + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_unknown + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_urlbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_urlbar_handoff + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_urlbar_persisted + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_urlbar_searchmode + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_webextension + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_about_home + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_about_newtab + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_contextmenu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_reload + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_searchbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_system + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_tabhistory + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_unknown + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_urlbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_urlbar_handoff + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_urlbar_persisted + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_urlbar_searchmode + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_webextension + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_customized_widgets + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_all_tabs_panel_entrypoint + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_app_menu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_bookmarks_bar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_content_context + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_keyboard + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_menu_bar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_nav_bar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_overflow_menu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_pageaction_panel + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_pageaction_urlbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_pinned_overflow_menu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_containers + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_experimental + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_general + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_home + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_more_from_mozilla + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_privacy + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_search + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_search_results + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_sync + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_unknown + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_tabs_bar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_tabs_context + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_tabs_context_entrypoint + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_unified_extensions_area + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_vertical_tabs_container + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cert_compression_failures + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cert_compression_used + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cert_verifier_cert_revocation_mechanisms + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cert_verifier_crlite_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cert_verifier_crlite_vs_ocsp_result + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: codec_stats_audio_preferred_codec + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: codec_stats_other_fec_signaled + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: codec_stats_ulpfec_negotiated + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: codec_stats_video_preferred_codec + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cookie_banners_click_result + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cookie_banners_cmp_detected_cmp + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cookie_banners_cmp_result + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cookie_banners_rule_lookup_by_domain + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cookie_banners_rule_lookup_by_load + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: crash_submission_channel_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: crash_submission_collector_errors + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: dap_report_generation_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: dap_upload_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: data_storage_entries + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: dom_parentprocess_process_launch_errors + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: dotprint_failure + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: extensions_apis_dnr_startup_cache_entries + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: extensions_counters_browser_action_preload_result + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: extensions_counters_event_page_idle_result + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: extensions_process_event + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: extensions_startup_cache_read_errors + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: fog_validation_gvsv_audio_stream_init + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: fog_validation_gvsv_audio_stream_init_gecko + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: formautofill_form_submission_heuristic + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: geolocation_fallback + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: geolocation_request_result + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: gfx_content_frame_time_reason + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: glean_error_invalid_label + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: glean_error_invalid_overflow + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: glean_error_invalid_state + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: glean_error_invalid_value + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: glean_upload_ping_upload_failure + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: glean_validation_pings_submitted + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: gmp_update_xml_fetch_result + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: gpu_process_crash_fallbacks + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_received_messages_content_background + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_received_messages_content_foreground + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_received_messages_gpu_process + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_received_messages_parent_active + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_received_messages_parent_inactive + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_sent_messages_content_background + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_sent_messages_content_foreground + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_sent_messages_gpu_process + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_sent_messages_parent_active + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_sent_messages_parent_inactive + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: library_link + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: library_opened + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: library_search + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: media_audio_backend + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: media_audio_init_failure + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: media_decode_error_per_mime_type + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: media_playback_not_supported_video_per_mime_type + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: messaging_system_invalid_nested_data + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: migration_discovered_migrators + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_early_hints + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_eh_link_type + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_eh_response_version + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_http3_0rtt_state + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_http3_ech_outcome_grease + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_http3_ech_outcome_none + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_http3_ech_outcome_real + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_byte_range_request + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_cache_hit_miss_stat_per_cache_size + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_cors_authorization_header + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_data_size_pb_per_type + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_data_size_per_type + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_addon_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_addonversion_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_other_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_remote_settings_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_success_or_failure + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_telemetry_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_update_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_tls_early_data_accepted + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_tls_early_data_negotiated + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_cookie_timestamp_fixed_count + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_data_transferred_v3_kb + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_dns_native_count + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_fetch_keepalive_discard_count + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_fetch_keepalive_request_count + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_3_connection_close_reason + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_3_ecn_path_capability + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition_disabled_no_reason + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition_disabled_upgrade + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition_disabled_wont + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition_enabled_no_reason + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition_enabled_upgrade + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition_enabled_wont + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_onstart_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_onstart_success_https_rr + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_ip_addr_any_count + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_redirect_to_scheme_subresource + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_redirect_to_scheme_top_level + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_response_status_code + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_response_version + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_to_https_upgrade_reason + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_https_rr_presented + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_https_upgrade_with_https_rr + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_proxy_info_type + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_residual_cache_folder_removal + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_speculative_connect_outcome + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_speculative_connection_outcome + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_trr_connection_cycle_count + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_trr_request_count + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_trr_request_count_per_conn + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: os_environment_invoked_to_handle + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: os_environment_launched_to_handle + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_buttons + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_editing + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_editing_highlight_color + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_editing_highlight_kind + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_editing_highlight_method + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_editing_highlight_number_of_colors + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_geckoview + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_image_added + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_stamp + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ping_centre_send_failures_by_namespace + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ping_centre_send_successes_by_namespace + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_ms_per_thread_content_background + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_ms_per_thread_content_foreground + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_ms_per_thread_gpu_process + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_ms_per_thread_parent_active + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_ms_per_thread_parent_inactive + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_time_per_process_type_ms + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_time_per_tracker_type_ms + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_energy_per_process_type + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_gpu_time_per_process_type_ms + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_wakeups_per_process_type + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_wakeups_per_thread_content_background + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_wakeups_per_thread_content_foreground + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_wakeups_per_thread_gpu_process + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_wakeups_per_thread_parent_active + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_wakeups_per_thread_parent_inactive + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: printing_error + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: printing_settings_changed + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: printing_target_type + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: private_attribution_database + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: private_attribution_measure_conversion + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: private_attribution_save_impression + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: protocolhandler_mailto_handler_prompt_shown + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: protocolhandler_mailto_prompt_clicked + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pwmgr_form_autofill_result + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: rtcrtpsender_setparameters_blame_length_changed + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: rtcrtpsender_setparameters_blame_no_getparameters + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: rtcrtpsender_setparameters_blame_no_transactionid + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: rtcrtpsender_setparameters_blame_stale_transactionid + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: search_service_initialization_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: security_client_auth_cert_usage + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: serp_ads_blocked_count + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: sidebar_link + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: sidebar_search + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: suggest_relevance_outcome + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: suggest_relevance_status + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: tls_xyber_intolerance_reason + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: translations_request_count + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_autofill_about + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_autofill_adaptive + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_autofill_origin + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_autofill_other + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_autofill_url + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_bookmark + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_bookmark_adaptive + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_clipboard + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_dynamic + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_dynamic_wikipedia + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_extension + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_formhistory + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_history + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_history_adaptive + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_keyword + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_navigational + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_quickaction + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_quicksuggest + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_recent_search + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_remotetab + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_restrict_keyword_actions + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_restrict_keyword_bookmarks + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_restrict_keyword_history + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_restrict_keyword_tabs + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchengine + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_bookmarkmenu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_handoff + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_historymenu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_keywordoffer + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_oneoff + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_other + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_searchbutton + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_shortcut + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_tabmenu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_tabtosearch + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_tabtosearch_onboard + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_topsites_newtab + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_topsites_urlbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_touchbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_typed + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchsuggestion + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchsuggestion_rich + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_switchtab + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_tabtosearch + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_tip + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_topsite + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_trending + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_trending_rich + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_unknown + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_visiturl + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_weather + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_bookmarkmenu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_handoff + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_historymenu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_keywordoffer + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_oneoff + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_other + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_searchbutton + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_shortcut + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_tabmenu + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_tabtosearch + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_tabtosearch_onboard + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_topsites_newtab + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_topsites_urlbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_touchbar + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_typed + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_tabtosearch_impressions + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_tabtosearch_impressions_onboarding + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_tips + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: web_notification_permission_origin + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: web_notification_request_permission_origin + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: web_notification_show_origin + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: web_push_content_encoding + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: web_push_error_code + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webauthn_create_authenticator_attachment + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webauthn_get_authenticator_attachment + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtc_video_recv_codec_used + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtc_video_send_codec_used + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtcdtls_cipher + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtcdtls_client_handshake_result + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtcdtls_protocol_version + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtcdtls_server_handshake_result + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtcdtls_srtp_cipher + type: RECORD + mode: NULLABLE + name: labeled_counter + type: RECORD + - fields: + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_cache_hit_rate_per_cache_size + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: networking_http_3_ecn_ce_ect0_ratio + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: quotamanager_initialize_repository_number_of_iterations + type: RECORD + mode: NULLABLE + name: labeled_custom_distribution + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: value + type: RECORD + mode: REPEATED + name: labeled_rate + type: RECORD + - fields: + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: STRING + mode: REPEATED + name: cookie_banners_google_gdpr_choice_cookie + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: STRING + mode: REPEATED + name: places_places_database_corruption_handling_stage + type: RECORD + mode: NULLABLE + name: labeled_string + type: RECORD + - fields: + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: netwerk_http3_0rtt_state_duration + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: netwerk_http3_time_to_reuse_idle_connection + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_http3_complete_load + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_http3_first_sent_to_last_received + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_http3_open_to_first_received + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_http3_open_to_first_sent + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_http3_tls_handshake + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_sup_http3_tcp_connection + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: networking_trr_fetch_duration + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: suggest_ingest_download_time + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: suggest_ingest_time + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: suggest_query_time + type: RECORD + mode: NULLABLE + name: labeled_timing_distribution + type: RECORD + - fields: + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: browser_backup_compressed_archive_size + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: browser_backup_total_backup_size + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_storage_memory + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_apis_dnr_startup_cache_read_size + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_apis_dnr_startup_cache_write_size + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: fog_ipc_buffer_sizes + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_database_size + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_upload_discarded_exceeding_pings_size + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_upload_pending_pings_directory_size + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cache_metadata_size + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_udp_datagram_segment_size_received + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_udp_datagram_segment_size_sent + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_udp_datagram_size_received + type: RECORD + - fields: + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_clone_deserialize_size + type: RECORD + mode: NULLABLE + name: memory_distribution + type: RECORD + - fields: + - mode: NULLABLE + name: browser_ui_toolbar_widgets + type: JSON + - mode: NULLABLE + name: fog_validation_some_object + type: JSON + mode: NULLABLE + name: object + type: RECORD + - fields: + - mode: NULLABLE + name: a11y_hcm_background + type: INTEGER + - mode: NULLABLE + name: a11y_hcm_foreground + type: INTEGER + - mode: NULLABLE + name: bounce_tracking_protection_mode + type: INTEGER + - mode: NULLABLE + name: browser_backup_browser_extension_data_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_cookies_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_credentials_data_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_extension_store_permissions_data_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_extensions_json_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_extensions_storage_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_extensions_xpi_directory_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_favicons_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_form_history_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_location_on_device + type: INTEGER + - mode: NULLABLE + name: browser_backup_misc_data_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_places_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_preferences_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_prof_d_disk_space + type: INTEGER + - mode: NULLABLE + name: browser_backup_security_data_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_session_store_backups_directory_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_session_store_size + type: INTEGER + - mode: NULLABLE + name: browser_backup_storage_sync_size + type: INTEGER + - mode: NULLABLE + name: browser_engagement_max_concurrent_tab_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_max_concurrent_tab_pinned_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_max_concurrent_vertical_tab_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_max_concurrent_vertical_tab_pinned_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_max_concurrent_window_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_profile_count + type: INTEGER + - mode: NULLABLE + name: browser_engagement_session_time_excluding_suspend + type: INTEGER + - mode: NULLABLE + name: browser_engagement_session_time_including_suspend + type: INTEGER + - mode: NULLABLE + name: browser_engagement_unique_domains_count + type: INTEGER + - mode: NULLABLE + name: browser_link_open_newwindow_restriction + type: INTEGER + - mode: NULLABLE + name: browser_startup_abouthome_cache_result + type: INTEGER + - mode: NULLABLE + name: cert_verifier_trust_obj_count + type: INTEGER + - mode: NULLABLE + name: contentblocking_category + type: INTEGER + - mode: NULLABLE + name: data_storage_alternate_services + type: INTEGER + - mode: NULLABLE + name: data_storage_client_auth_remember_list + type: INTEGER + - mode: NULLABLE + name: data_storage_site_security_service_state + type: INTEGER + - mode: NULLABLE + name: datasanitization_session_permission_exceptions + type: INTEGER + - mode: NULLABLE + name: extensions_apis_dnr_evaluate_rules_count_max + type: INTEGER + - mode: NULLABLE + name: extensions_quarantined_domains_listsize + type: INTEGER + - mode: NULLABLE + name: extensions_startup_cache_write_bytelength + type: INTEGER + - mode: NULLABLE + name: fog_max_pings_per_minute + type: INTEGER + - mode: NULLABLE + name: fog_validation_gvsv_primary_height + type: INTEGER + - mode: NULLABLE + name: fog_validation_gvsv_primary_width + type: INTEGER + - mode: NULLABLE + name: formautofill_creditcards_autofill_profiles_count + type: INTEGER + - mode: NULLABLE + name: gfx_adapter_primary_ram + type: INTEGER + - mode: NULLABLE + name: gfx_display_count + type: INTEGER + - mode: NULLABLE + name: gfx_display_primary_height + type: INTEGER + - mode: NULLABLE + name: gfx_display_primary_width + type: INTEGER + - mode: NULLABLE + name: gfx_hdr_windows_display_colorspace_bitfield + type: INTEGER + - mode: NULLABLE + name: gpu_process_total_launch_attempts + type: INTEGER + - mode: NULLABLE + name: gpu_process_unstable_launch_attempts + type: INTEGER + - mode: NULLABLE + name: networking_doh_heuristics_result + type: INTEGER + - mode: NULLABLE + name: networking_https_rr_prefs_usage + type: INTEGER + - mode: NULLABLE + name: networking_loading_certs_task + type: INTEGER + - mode: NULLABLE + name: networking_nss_initialization + type: INTEGER + - mode: NULLABLE + name: pictureinpicture_most_concurrent_players + type: INTEGER + - mode: NULLABLE + name: pkcs11_third_party_modules_loaded + type: INTEGER + - mode: NULLABLE + name: places_pages_need_frecency_recalculation + type: INTEGER + - mode: NULLABLE + name: places_previousday_visits + type: INTEGER + - mode: NULLABLE + name: policies_count + type: INTEGER + - mode: NULLABLE + name: pwmgr_potentially_breached_passwords + type: INTEGER + - mode: NULLABLE + name: security_global_privacy_control_enabled + type: INTEGER + - mode: NULLABLE + name: security_https_only_mode_enabled + type: INTEGER + - mode: NULLABLE + name: security_https_only_mode_enabled_pbm + type: INTEGER + - mode: NULLABLE + name: sidebar_width + type: INTEGER + - mode: NULLABLE + name: startup_profile_count + type: INTEGER + - mode: NULLABLE + name: startup_seconds_since_last_os_restart + type: INTEGER + mode: NULLABLE + name: quantity + type: RECORD + - fields: + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: cert_signature_cache_hits + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: cert_trust_cache_hits + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: cookie_banners_cmp_ratio_handled_by_cmp_rule + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: httpsfirst_downgraded_on_timer + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: httpsfirst_downgraded_on_timer_schemeless + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: networking_set_cookie_expired_without_server_time + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: networking_set_cookie_foreign + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: networking_set_cookie_foreign_partitioned + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: networking_set_cookie_partitioned + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: parsing_svg_unusual_pcdata + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: pkcs11_built_in_roots_module + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: pkcs11_nss_cert_db + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: private_browsing_window_open_during_teardown + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_length_changed + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_no_encodings + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_no_getparameters + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_no_transactionid + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_other + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_rid_changed + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_stale_transactionid + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_warn_length_changed + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_warn_no_getparameters + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_warn_no_transactionid + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_warn_rid_changed + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_warn_stale_transactionid + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_used_sendencodings + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: sct_signature_cache_hits + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: translations_error_rate + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: verification_used_cert_from_built_in_roots_module + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: verification_used_cert_from_nss_cert_db + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: verification_used_cert_from_preloaded_intermediates + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: verification_used_cert_from_third_party_certificates + type: RECORD + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: verification_used_cert_from_tls_handshake + type: RECORD + mode: NULLABLE + name: rate + type: RECORD + - fields: + - mode: NULLABLE + name: a11y_instantiators + type: STRING + - mode: NULLABLE + name: blocklist_mlbf_softblocks_source + type: STRING + - mode: NULLABLE + name: blocklist_mlbf_source + type: STRING + - mode: NULLABLE + name: extensions_quarantined_domains_listhash + type: STRING + - mode: NULLABLE + name: extensions_quarantined_domains_remotehash + type: STRING + - mode: NULLABLE + name: gecko_build_id + type: STRING + - mode: NULLABLE + name: gecko_version + type: STRING + - mode: NULLABLE + name: geckoview_validation_build_id + type: STRING + - mode: NULLABLE + name: geckoview_validation_version + type: STRING + - mode: NULLABLE + name: genai_chatbot_provider + type: STRING + - mode: NULLABLE + name: gfx_adapter_primary_description + type: STRING + - mode: NULLABLE + name: gfx_adapter_primary_device_id + type: STRING + - mode: NULLABLE + name: gfx_adapter_primary_driver_date + type: STRING + - mode: NULLABLE + name: gfx_adapter_primary_driver_files + type: STRING + - mode: NULLABLE + name: gfx_adapter_primary_driver_vendor + type: STRING + - mode: NULLABLE + name: gfx_adapter_primary_driver_version + type: STRING + - mode: NULLABLE + name: gfx_adapter_primary_subsystem_id + type: STRING + - mode: NULLABLE + name: gfx_adapter_primary_vendor_id + type: STRING + - mode: NULLABLE + name: gfx_feature_webrender + type: STRING + - mode: NULLABLE + name: gfx_linux_window_protocol + type: STRING + - mode: NULLABLE + name: gfx_status_compositor + type: STRING + - mode: NULLABLE + name: gfx_status_last_compositor_gecko_version + type: STRING + - mode: NULLABLE + name: glean_client_annotation_experimentation_id + type: STRING + - mode: NULLABLE + name: glean_database_rkv_load_error + type: STRING + - mode: NULLABLE + name: gpu_process_feature_status + type: STRING + - mode: NULLABLE + name: installation_first_seen_failure_reason + type: STRING + - mode: NULLABLE + name: installation_first_seen_installer_type + type: STRING + - mode: NULLABLE + name: installation_first_seen_version + type: STRING + - mode: NULLABLE + name: os_environment_allowed_app_sources + type: STRING + - mode: NULLABLE + name: os_environment_launch_method + type: STRING + - mode: NULLABLE + name: ping_reason + type: STRING + - mode: NULLABLE + name: search_engine_default_display_name + type: STRING + - mode: NULLABLE + name: search_engine_default_engine_id + type: STRING + - mode: NULLABLE + name: search_engine_default_load_path + type: STRING + - mode: NULLABLE + name: search_engine_default_verified + type: STRING + - mode: NULLABLE + name: search_engine_private_display_name + type: STRING + - mode: NULLABLE + name: search_engine_private_engine_id + type: STRING + - mode: NULLABLE + name: search_engine_private_load_path + type: STRING + - mode: NULLABLE + name: search_engine_private_verified + type: STRING + - mode: NULLABLE + name: sidebar_display_settings + type: STRING + - mode: NULLABLE + name: sidebar_position_settings + type: STRING + - mode: NULLABLE + name: sidebar_tabs_layout + type: STRING + - mode: NULLABLE + name: startup_profile_database_version + type: STRING + - mode: NULLABLE + name: startup_profile_selection_reason + type: STRING + - mode: NULLABLE + name: widget_gtk_version + type: STRING + mode: NULLABLE + name: string + type: RECORD + - fields: + - mode: REPEATED + name: background_update_reasons_to_not_update + type: STRING + - mode: REPEATED + name: browser_migration_matched_extensions + type: STRING + - mode: REPEATED + name: browser_migration_unmatched_extensions + type: STRING + mode: NULLABLE + name: string_list + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: STRING + mode: REPEATED + name: text + type: RECORD + - fields: + - fields: + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: NULLABLE + name: extensions_startup_cache_load_time + type: RECORD + - fields: + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: NULLABLE + name: fog_initialization + type: RECORD + - fields: + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: NULLABLE + name: migration_time_to_produce_migrator_list + type: RECORD + - fields: + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: NULLABLE + name: networking_loading_certs_task + type: RECORD + - fields: + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: NULLABLE + name: networking_nss_initialization + type: RECORD + mode: NULLABLE + name: timespan + type: RECORD + - fields: + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: bounce_tracking_protection_purge_duration + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: browser_backup_favicons_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: browser_backup_places_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: browser_backup_total_backup_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_verification_time_failure + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_verification_time_success + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_verifier_cert_trust_evaluation_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cookie_banners_click_handle_duration + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cookie_banners_cmp_handle_duration + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_apis_dnr_evaluate_rules_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_apis_dnr_startup_cache_read_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_apis_dnr_startup_cache_write_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_apis_dnr_validate_rules_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_background_page_load + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_browser_action_popup_open + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_content_script_injection + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_extension_startup + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_page_action_popup_open + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_storage_local_get_idb + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_storage_local_get_json + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_storage_local_set_idb + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_storage_local_set_json + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: fingerprinting_protection_canvas_noise_calculate_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: fog_ipc_flush_durations + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: fog_validation_gvsv_composite_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_content_process_lifetime + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_page_load_progress_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_page_load_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_page_reload_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_startup_runtime + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_checkerboard_duration + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_checkerboard_potential_duration + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_composite_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_full_paint_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_paint_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_scroll_present_latency + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_database_write_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_upload_send_failure + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_upload_send_success + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_validation_shutdown_dispatcher_wait + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_validation_shutdown_wait + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: httpsfirst_downgrade_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: httpsfirst_downgrade_time_schemeless + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_compact_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_mark_roots_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_mark_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_minor_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_prepare_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_slice_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_sweep_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_total_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_baseline_compile_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_delazification_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_execution_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_gc_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_parse_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_protect_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_xdr_encode_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: localstorage_database_request_allow_to_close_response_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: ls_preparedatastore_processing_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: ls_preparelsdatabase_processing_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_cache_hit_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_cache_miss_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_cache_read_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_complete_load + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_complete_load_cached + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_complete_load_net + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_dns_end + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_dns_start + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_first_from_cache + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_first_sent_to_last_received + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_font_download_end + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_http_revalidation + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_open_to_first_received + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_open_to_first_sent + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_open_to_transaction_pending + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_cache_read_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_complete_load + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_complete_load_cached + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_complete_load_net + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_dns_end + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_dns_start + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_first_from_cache + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_first_sent_to_last_received + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_http_revalidation + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_open_to_first_received + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_open_to_first_sent + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_tcp_connection + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_tls_handshake + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_tcp_connection + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_tls_handshake + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cache_metadata_first_read_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cache_metadata_second_read_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_dns_failed_lookup_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_dns_lookup_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_dns_native_https_call_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_dns_renewal_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_dns_renewal_time_for_ttl + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_channel_page_open_to_first_sent + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_channel_page_open_to_first_sent_https_rr + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_channel_sub_open_to_first_sent + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_channel_sub_open_to_first_sent_https_rr + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_cssloader_ondatafinished_to_onstop_delay + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_html5parser_ondatafinished_to_onstop_delay + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_html5parser_ondatafinished_to_onstop_delay_negative + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_ondatafinished_delay + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_ondatafinished_delay_2 + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_ondatafinished_to_onstop_delay + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_ondatafinished_to_onstop_delay_negative + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_onstart_delay + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_onstop_delay + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_onstart_suspend_total_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_sqlite_cookies_block_main_thread + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_sqlite_cookies_time_to_block_main_thread + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_transaction_wait_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_transaction_wait_time_https_rr + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: ocsp_request_time_cancel + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: ocsp_request_time_failure + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: ocsp_request_time_success + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: paint_build_displaylist_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: perf_largest_contentful_paint + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: perf_largest_contentful_paint_from_response_start + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_clone_deserialize_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_interaction_keypress_present_latency + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_interaction_mouseup_click_present_latency + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_interaction_tab_switch_composite + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_page_non_blank_paint + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_page_total_content_page_load + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_async_sheet_load + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_eh_fcp_preconnect + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_eh_fcp_preconnect_preload_with_eh + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_eh_fcp_preconnect_preload_without_eh + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_eh_fcp_preload_with_eh + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_eh_fcp_preload_without_eh + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_fcp + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_fcp_responsestart + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_h3p_fcp_with_priority + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_http3_fcp_http3 + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_http3_fcp_supports_http3 + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_http3_fcp_without_priority + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_load_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_load_time_responsestart + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_req_anim_frame_callback + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_responsiveness_req_anim_frame_callback + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_dom_complete + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_dom_content_loaded_end + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_dom_content_loaded_start + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_dom_interactive + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_load_event_end + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_load_event_start + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_response_start + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: privacy_sanitize_load_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: relevancy_classify_duration + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: search_service_startup_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: serp_categorization_duration + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: urlbar_quick_suggest_ingest_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: wr_framebuild_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: wr_gpu_wait_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: wr_rasterize_blobs_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: wr_rasterize_glyphs_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: wr_renderer_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: wr_renderer_time_no_sc + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: wr_scenebuild_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: wr_sceneswap_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: wr_texture_cache_update_time + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: wr_time_to_frame_build + type: RECORD + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: wr_time_to_render_start + type: RECORD + mode: NULLABLE + name: timing_distribution + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: STRING + mode: REPEATED + name: url + type: RECORD + - fields: + - mode: NULLABLE + name: search_engine_default_submission_url + type: STRING + - mode: NULLABLE + name: search_engine_private_submission_url + type: STRING + mode: NULLABLE + name: url2 + type: RECORD + - fields: + - mode: NULLABLE + name: legacy_telemetry_client_id + type: STRING + - mode: NULLABLE + name: legacy_telemetry_profile_group_id + type: STRING + mode: NULLABLE + name: uuid + type: RECORD + mode: NULLABLE + name: metrics + type: RECORD +- mode: NULLABLE + name: normalized_app_name + type: STRING +- mode: NULLABLE + name: normalized_channel + type: STRING +- mode: NULLABLE + name: normalized_country_code + type: STRING +- mode: NULLABLE + name: normalized_os + type: STRING +- mode: NULLABLE + name: normalized_os_version + type: STRING +- fields: + - mode: NULLABLE + name: end_time + type: STRING + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: branch + type: STRING + - fields: + - mode: NULLABLE + name: enrollment_id + type: STRING + - mode: NULLABLE + name: type + type: STRING + mode: NULLABLE + name: extra + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: experiments + type: RECORD + - mode: NULLABLE + name: ping_type + type: STRING + - mode: NULLABLE + name: reason + type: STRING + - mode: NULLABLE + name: seq + type: INTEGER + - mode: NULLABLE + name: start_time + type: STRING + mode: NULLABLE + name: ping_info + type: RECORD +- mode: NULLABLE + name: sample_id + type: INTEGER +- mode: NULLABLE + name: submission_timestamp + type: TIMESTAMP diff --git a/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/insert.sql b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/insert.sql new file mode 100644 index 0000000..9779983 --- /dev/null +++ b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/insert.sql @@ -0,0 +1,6401 @@ + + INSERT INTO + `moz-fx-data-shared-prod.firefox_desktop_stable.metrics_v1` + additional_properties, + STRUCT( + client_info.android_sdk_version, client_info.app_build, client_info.app_channel, client_info.app_display_version, client_info.architecture, client_info.client_id, client_info.device_manufacturer, client_info.device_model, client_info.first_run_date, client_info.locale, client_info.os, client_info.os_version, client_info.telemetry_sdk_build, client_info.build_date, client_info.windows_build_number, client_info.session_count, client_info.session_id + ) AS `client_info` + , document_id, + ARRAY( + SELECT + STRUCT( + events.category, + ARRAY( + SELECT + STRUCT( + extra.key, extra.value + ) + FROM UNNEST(events.extra) AS `extra` + ) AS `extra` + , events.name, events.timestamp + ) + FROM UNNEST(events) AS `events` + ) AS `events` + , + STRUCT( + + STRUCT( + metadata.geo.city, metadata.geo.country, metadata.geo.db_version, metadata.geo.subdivision1, metadata.geo.subdivision2 + ) AS `geo` + , + STRUCT( + metadata.header.date, metadata.header.dnt, metadata.header.x_debug_id, metadata.header.x_pingsender_version, metadata.header.x_source_tags, metadata.header.x_telemetry_agent, metadata.header.x_foxsec_ip_reputation, metadata.header.x_lb_tags + ) AS `header` + , + STRUCT( + metadata.isp.db_version, metadata.isp.name, metadata.isp.organization + ) AS `isp` + , + STRUCT( + metadata.user_agent.browser, metadata.user_agent.os, metadata.user_agent.version + ) AS `user_agent` + + ) AS `metadata` + , + STRUCT( + + STRUCT( + metrics.boolean.glean_core_migration_successful, metrics.boolean.glean_error_preinit_tasks_timeout, metrics.boolean.fog_failed_idle_registration, metrics.boolean.browser_ui_proton_enabled, metrics.boolean.gifft_validation_main_ping_assembling, metrics.boolean.cookie_banners_service_detect_only, metrics.boolean.startup_is_restored_by_macos, metrics.boolean.shopping_settings_component_opted_out, metrics.boolean.shopping_settings_has_onboarded, metrics.boolean.shopping_settings_nimbus_disabled_shopping, metrics.boolean.extensions_use_remote_policy, metrics.boolean.extensions_use_remote_pref, metrics.boolean.newtab_handoff_preference_enabled, metrics.boolean.shopping_settings_disabled_ads, metrics.boolean.gfx_status_headless, metrics.boolean.shopping_settings_auto_open_user_disabled, metrics.boolean.bounce_tracking_protection_enabled_at_startup, metrics.boolean.bounce_tracking_protection_enabled_dry_run_mode_at_startup, metrics.boolean.installation_first_seen_admin_user, metrics.boolean.installation_first_seen_default_path, metrics.boolean.installation_first_seen_from_msi, metrics.boolean.installation_first_seen_install_existed, metrics.boolean.installation_first_seen_other_inst, metrics.boolean.installation_first_seen_other_msix_inst, metrics.boolean.installation_first_seen_profdir_existed, metrics.boolean.installation_first_seen_silent, metrics.boolean.genai_chatbot_enabled, metrics.boolean.genai_chatbot_sidebar, metrics.boolean.genai_chatbot_shortcuts, metrics.boolean.genai_chatbot_shortcuts_custom, metrics.boolean.sslkeylogging_enabled, metrics.boolean.a11y_always_underline_links, metrics.boolean.a11y_backplate, metrics.boolean.a11y_invert_colors, metrics.boolean.a11y_use_system_colors, metrics.boolean.browser_startup_abouthome_cache_shutdownwrite, metrics.boolean.datasanitization_privacy_clear_on_shutdown_cache, metrics.boolean.datasanitization_privacy_clear_on_shutdown_cookies, metrics.boolean.datasanitization_privacy_clear_on_shutdown_downloads, metrics.boolean.datasanitization_privacy_clear_on_shutdown_formdata, metrics.boolean.datasanitization_privacy_clear_on_shutdown_history, metrics.boolean.datasanitization_privacy_clear_on_shutdown_offline_apps, metrics.boolean.datasanitization_privacy_clear_on_shutdown_open_windows, metrics.boolean.datasanitization_privacy_clear_on_shutdown_sessions, metrics.boolean.datasanitization_privacy_clear_on_shutdown_site_settings, metrics.boolean.datasanitization_privacy_sanitize_sanitize_on_shutdown, metrics.boolean.gfx_os_compositor, metrics.boolean.gfx_supports_hdr, metrics.boolean.gfx_tmp_writable, metrics.boolean.preferences_prefs_file_was_invalid, metrics.boolean.networking_http3_enabled, metrics.boolean.migration_uninstaller_profile_refresh, metrics.boolean.os_environment_is_admin_without_uac, metrics.boolean.os_environment_is_kept_in_dock, metrics.boolean.os_environment_is_taskbar_pinned, metrics.boolean.os_environment_is_taskbar_pinned_private, metrics.boolean.pictureinpicture_toggle_enabled, metrics.boolean.startup_is_cold, metrics.boolean.telemetry_data_upload_optin, metrics.boolean.contentblocking_cryptomining_blocking_enabled, metrics.boolean.contentblocking_fingerprinting_blocking_enabled, metrics.boolean.policies_is_enterprise, metrics.boolean.widget_dark_mode, metrics.boolean.dom_parentprocess_private_window_used, metrics.boolean.browser_backup_enabled, metrics.boolean.browser_backup_pswd_encrypted, metrics.boolean.browser_backup_scheduler_enabled + ) AS `boolean` + , + STRUCT( + metrics.counter.glean_error_preinit_tasks_overflow, metrics.counter.glean_validation_app_forceclosed_count, metrics.counter.glean_validation_baseline_ping_count, metrics.counter.glean_upload_deleted_pings_after_quota_hit, metrics.counter.glean_upload_pending_pings, metrics.counter.fog_ipc_replay_failures, metrics.counter.glean_validation_foreground_count, metrics.counter.glean_error_io, metrics.counter.glean_time_invalid_timezone_offset, metrics.counter.power_total_cpu_time_ms, metrics.counter.browser_engagement_active_ticks, metrics.counter.browser_engagement_uri_count, metrics.counter.fog_ipc_flush_failures, metrics.counter.power_total_gpu_time_ms, metrics.counter.power_cpu_time_bogus_values, metrics.counter.power_gpu_time_bogus_values, metrics.counter.power_total_thread_wakeups, metrics.counter.fog_ipc_shutdown_registration_failures, metrics.counter.ping_centre_send_failures, metrics.counter.pdfjs_used, metrics.counter.rtcrtpsender_count, metrics.counter.rtcrtpsender_count_setparameters_compat, metrics.counter.glean_upload_in_flight_pings_dropped, metrics.counter.glean_upload_missing_send_ids, metrics.counter.dotprint_requested, metrics.counter.dotprint_android_dialog_requested, metrics.counter.messaging_system_glean_ping_for_ping_failures, metrics.counter.translations_requests_count, metrics.counter.fog_inits_during_shutdown, metrics.counter.bloburl_resolve_stopped, metrics.counter.shopping_product_page_visits, metrics.counter.networking_residual_cache_folder_count, metrics.counter.cookie_banners_cookie_injection_fail, metrics.counter.networking_set_cookie, metrics.counter.tls_certificate_verifications, metrics.counter.pdfjs_editing_highlight_color_changed, metrics.counter.pdfjs_editing_highlight_deleted, metrics.counter.pdfjs_editing_highlight_edited, metrics.counter.pdfjs_editing_highlight_print, metrics.counter.pdfjs_editing_highlight_save, metrics.counter.pdfjs_editing_highlight_thickness_changed, metrics.counter.pdfjs_editing_highlight_toggle_visibility, metrics.counter.httpsfirst_downgraded, metrics.counter.httpsfirst_downgraded_schemeless, metrics.counter.httpsfirst_upgraded, metrics.counter.httpsfirst_upgraded_schemeless, metrics.counter.hls_canplay_requested, metrics.counter.hls_canplay_supported, metrics.counter.bounce_tracking_protection_purge_count_classified_tracker, metrics.counter.webauthn_create_failure, metrics.counter.webauthn_create_passkey, metrics.counter.webauthn_create_success, metrics.counter.webauthn_get_failure, metrics.counter.webauthn_get_success, metrics.counter.crash_submission_failure, metrics.counter.crash_submission_pending, metrics.counter.crash_submission_success, metrics.counter.netwerk_parent_connect_timeout, metrics.counter.networking_os_socket_limit_reached, metrics.counter.page_icon_fit_icon_count, metrics.counter.page_icon_small_icon_count, metrics.counter.web_notification_insecure_context_permission_request, metrics.counter.cert_signature_cache_total, metrics.counter.sct_signature_cache_total, metrics.counter.webrtcdtls_client_handshake_started_counter, metrics.counter.webrtcdtls_server_handshake_started_counter, metrics.counter.ls_request_recv_cancellation, metrics.counter.ls_request_send_cancellation, metrics.counter.apz_scrollwheel_overshoot, metrics.counter.downloads_file_opened, metrics.counter.downloads_panel_shown, metrics.counter.findbar_find_next, metrics.counter.findbar_find_prev, metrics.counter.findbar_highlight_all, metrics.counter.findbar_match_case, metrics.counter.findbar_match_diacritics, metrics.counter.findbar_shown, metrics.counter.findbar_whole_words, metrics.counter.gfx_skipped_composites, metrics.counter.media_element_in_page_count, metrics.counter.networking_doh_heuristics_attempts, metrics.counter.networking_doh_heuristics_pass_count, metrics.counter.opaque_response_blocking_cross_origin_opaque_response_count, metrics.counter.opaque_response_blocking_javascript_validation_count, metrics.counter.places_sponsored_visit_no_triggering_url, metrics.counter.cert_trust_cache_total, metrics.counter.contentblocking_trackers_blocked_count, metrics.counter.networking_cookie_count_invalid_first_party_partitioned_in_db, metrics.counter.networking_set_invalid_first_party_partitioned_cookie, metrics.counter.printing_dialog_opened_via_preview_tm, metrics.counter.printing_dialog_via_preview_cancelled_tm, metrics.counter.printing_preview_cancelled_tm, metrics.counter.printing_preview_opened_tm, metrics.counter.printing_silent_print, metrics.counter.browser_engagement_uri_count_normal_mode, metrics.counter.dom_contentprocess_build_id_mismatch, metrics.counter.dom_contentprocess_build_id_mismatch_false_positive, metrics.counter.dom_contentprocess_os_priority_change_considered, metrics.counter.dom_contentprocess_os_priority_lowered, metrics.counter.dom_contentprocess_os_priority_raised, metrics.counter.mathml_doc_count, metrics.counter.browser_ui_interaction_all_tabs_panel_dragstart_tab_event_count, metrics.counter.browser_ui_interaction_textrecognition_error, metrics.counter.web_push_detected_duplicated_message_ids, metrics.counter.browser_engagement_bookmarks_toolbar_bookmark_added, metrics.counter.browser_engagement_bookmarks_toolbar_bookmark_opened, metrics.counter.browser_engagement_tab_open_event_count, metrics.counter.browser_engagement_tab_pinned_event_count, metrics.counter.browser_engagement_tab_reload_count, metrics.counter.browser_engagement_tab_unload_count, metrics.counter.browser_engagement_unfiltered_uri_count, metrics.counter.browser_engagement_vertical_tab_open_event_count, metrics.counter.browser_engagement_vertical_tab_pinned_event_count, metrics.counter.browser_engagement_window_open_event_count, metrics.counter.urlbar_abandonment_count, metrics.counter.urlbar_autofill_deletion, metrics.counter.urlbar_engagement_count, metrics.counter.urlbar_impression_autofill_about, metrics.counter.urlbar_impression_autofill_adaptive, metrics.counter.urlbar_impression_autofill_origin, metrics.counter.urlbar_impression_autofill_other, metrics.counter.urlbar_impression_autofill_url, metrics.counter.urlbar_persistedsearchterms_revert_by_popup_count, metrics.counter.urlbar_persistedsearchterms_view_count, metrics.counter.urlbar_trending_block, metrics.counter.urlbar_zeroprefix_abandonment, metrics.counter.urlbar_zeroprefix_engagement, metrics.counter.urlbar_zeroprefix_exposure + ) AS `counter` + , + ARRAY( + SELECT + STRUCT( + jwe.key, jwe.value + ) + FROM UNNEST(metrics.jwe) AS `jwe` + ) AS `jwe` + , + STRUCT( + + ARRAY( + SELECT + STRUCT( + glean_error_invalid_label.key, glean_error_invalid_label.value + ) + FROM UNNEST(metrics.labeled_counter.glean_error_invalid_label) AS `glean_error_invalid_label` + ) AS `glean_error_invalid_label` + , + ARRAY( + SELECT + STRUCT( + glean_error_invalid_overflow.key, glean_error_invalid_overflow.value + ) + FROM UNNEST(metrics.labeled_counter.glean_error_invalid_overflow) AS `glean_error_invalid_overflow` + ) AS `glean_error_invalid_overflow` + , + ARRAY( + SELECT + STRUCT( + glean_error_invalid_state.key, glean_error_invalid_state.value + ) + FROM UNNEST(metrics.labeled_counter.glean_error_invalid_state) AS `glean_error_invalid_state` + ) AS `glean_error_invalid_state` + , + ARRAY( + SELECT + STRUCT( + glean_error_invalid_value.key, glean_error_invalid_value.value + ) + FROM UNNEST(metrics.labeled_counter.glean_error_invalid_value) AS `glean_error_invalid_value` + ) AS `glean_error_invalid_value` + , + ARRAY( + SELECT + STRUCT( + glean_upload_ping_upload_failure.key, glean_upload_ping_upload_failure.value + ) + FROM UNNEST(metrics.labeled_counter.glean_upload_ping_upload_failure) AS `glean_upload_ping_upload_failure` + ) AS `glean_upload_ping_upload_failure` + , + ARRAY( + SELECT + STRUCT( + glean_validation_pings_submitted.key, glean_validation_pings_submitted.value + ) + FROM UNNEST(metrics.labeled_counter.glean_validation_pings_submitted) AS `glean_validation_pings_submitted` + ) AS `glean_validation_pings_submitted` + , + ARRAY( + SELECT + STRUCT( + power_cpu_time_per_process_type_ms.key, power_cpu_time_per_process_type_ms.value + ) + FROM UNNEST(metrics.labeled_counter.power_cpu_time_per_process_type_ms) AS `power_cpu_time_per_process_type_ms` + ) AS `power_cpu_time_per_process_type_ms` + , + ARRAY( + SELECT + STRUCT( + power_gpu_time_per_process_type_ms.key, power_gpu_time_per_process_type_ms.value + ) + FROM UNNEST(metrics.labeled_counter.power_gpu_time_per_process_type_ms) AS `power_gpu_time_per_process_type_ms` + ) AS `power_gpu_time_per_process_type_ms` + , + ARRAY( + SELECT + STRUCT( + power_wakeups_per_process_type.key, power_wakeups_per_process_type.value + ) + FROM UNNEST(metrics.labeled_counter.power_wakeups_per_process_type) AS `power_wakeups_per_process_type` + ) AS `power_wakeups_per_process_type` + , + ARRAY( + SELECT + STRUCT( + gmp_update_xml_fetch_result.key, gmp_update_xml_fetch_result.value + ) + FROM UNNEST(metrics.labeled_counter.gmp_update_xml_fetch_result) AS `gmp_update_xml_fetch_result` + ) AS `gmp_update_xml_fetch_result` + , + ARRAY( + SELECT + STRUCT( + power_cpu_ms_per_thread_content_background.key, power_cpu_ms_per_thread_content_background.value + ) + FROM UNNEST(metrics.labeled_counter.power_cpu_ms_per_thread_content_background) AS `power_cpu_ms_per_thread_content_background` + ) AS `power_cpu_ms_per_thread_content_background` + , + ARRAY( + SELECT + STRUCT( + power_cpu_ms_per_thread_content_foreground.key, power_cpu_ms_per_thread_content_foreground.value + ) + FROM UNNEST(metrics.labeled_counter.power_cpu_ms_per_thread_content_foreground) AS `power_cpu_ms_per_thread_content_foreground` + ) AS `power_cpu_ms_per_thread_content_foreground` + , + ARRAY( + SELECT + STRUCT( + power_cpu_ms_per_thread_gpu_process.key, power_cpu_ms_per_thread_gpu_process.value + ) + FROM UNNEST(metrics.labeled_counter.power_cpu_ms_per_thread_gpu_process) AS `power_cpu_ms_per_thread_gpu_process` + ) AS `power_cpu_ms_per_thread_gpu_process` + , + ARRAY( + SELECT + STRUCT( + power_cpu_ms_per_thread_parent_active.key, power_cpu_ms_per_thread_parent_active.value + ) + FROM UNNEST(metrics.labeled_counter.power_cpu_ms_per_thread_parent_active) AS `power_cpu_ms_per_thread_parent_active` + ) AS `power_cpu_ms_per_thread_parent_active` + , + ARRAY( + SELECT + STRUCT( + power_cpu_ms_per_thread_parent_inactive.key, power_cpu_ms_per_thread_parent_inactive.value + ) + FROM UNNEST(metrics.labeled_counter.power_cpu_ms_per_thread_parent_inactive) AS `power_cpu_ms_per_thread_parent_inactive` + ) AS `power_cpu_ms_per_thread_parent_inactive` + , + ARRAY( + SELECT + STRUCT( + power_wakeups_per_thread_content_background.key, power_wakeups_per_thread_content_background.value + ) + FROM UNNEST(metrics.labeled_counter.power_wakeups_per_thread_content_background) AS `power_wakeups_per_thread_content_background` + ) AS `power_wakeups_per_thread_content_background` + , + ARRAY( + SELECT + STRUCT( + power_wakeups_per_thread_content_foreground.key, power_wakeups_per_thread_content_foreground.value + ) + FROM UNNEST(metrics.labeled_counter.power_wakeups_per_thread_content_foreground) AS `power_wakeups_per_thread_content_foreground` + ) AS `power_wakeups_per_thread_content_foreground` + , + ARRAY( + SELECT + STRUCT( + power_wakeups_per_thread_gpu_process.key, power_wakeups_per_thread_gpu_process.value + ) + FROM UNNEST(metrics.labeled_counter.power_wakeups_per_thread_gpu_process) AS `power_wakeups_per_thread_gpu_process` + ) AS `power_wakeups_per_thread_gpu_process` + , + ARRAY( + SELECT + STRUCT( + power_wakeups_per_thread_parent_active.key, power_wakeups_per_thread_parent_active.value + ) + FROM UNNEST(metrics.labeled_counter.power_wakeups_per_thread_parent_active) AS `power_wakeups_per_thread_parent_active` + ) AS `power_wakeups_per_thread_parent_active` + , + ARRAY( + SELECT + STRUCT( + power_wakeups_per_thread_parent_inactive.key, power_wakeups_per_thread_parent_inactive.value + ) + FROM UNNEST(metrics.labeled_counter.power_wakeups_per_thread_parent_inactive) AS `power_wakeups_per_thread_parent_inactive` + ) AS `power_wakeups_per_thread_parent_inactive` + , + ARRAY( + SELECT + STRUCT( + netwerk_early_hints.key, netwerk_early_hints.value + ) + FROM UNNEST(metrics.labeled_counter.netwerk_early_hints) AS `netwerk_early_hints` + ) AS `netwerk_early_hints` + , + ARRAY( + SELECT + STRUCT( + pdfjs_editing.key, pdfjs_editing.value + ) + FROM UNNEST(metrics.labeled_counter.pdfjs_editing) AS `pdfjs_editing` + ) AS `pdfjs_editing` + , + ARRAY( + SELECT + STRUCT( + pdfjs_buttons.key, pdfjs_buttons.value + ) + FROM UNNEST(metrics.labeled_counter.pdfjs_buttons) AS `pdfjs_buttons` + ) AS `pdfjs_buttons` + , + ARRAY( + SELECT + STRUCT( + dap_report_generation_status.key, dap_report_generation_status.value + ) + FROM UNNEST(metrics.labeled_counter.dap_report_generation_status) AS `dap_report_generation_status` + ) AS `dap_report_generation_status` + , + ARRAY( + SELECT + STRUCT( + dap_upload_status.key, dap_upload_status.value + ) + FROM UNNEST(metrics.labeled_counter.dap_upload_status) AS `dap_upload_status` + ) AS `dap_upload_status` + , + ARRAY( + SELECT + STRUCT( + netwerk_eh_link_type.key, netwerk_eh_link_type.value + ) + FROM UNNEST(metrics.labeled_counter.netwerk_eh_link_type) AS `netwerk_eh_link_type` + ) AS `netwerk_eh_link_type` + , + ARRAY( + SELECT + STRUCT( + cookie_banners_click_result.key, cookie_banners_click_result.value + ) + FROM UNNEST(metrics.labeled_counter.cookie_banners_click_result) AS `cookie_banners_click_result` + ) AS `cookie_banners_click_result` + , + ARRAY( + SELECT + STRUCT( + power_cpu_time_per_tracker_type_ms.key, power_cpu_time_per_tracker_type_ms.value + ) + FROM UNNEST(metrics.labeled_counter.power_cpu_time_per_tracker_type_ms) AS `power_cpu_time_per_tracker_type_ms` + ) AS `power_cpu_time_per_tracker_type_ms` + , + ARRAY( + SELECT + STRUCT( + ipc_received_messages_content_background.key, ipc_received_messages_content_background.value + ) + FROM UNNEST(metrics.labeled_counter.ipc_received_messages_content_background) AS `ipc_received_messages_content_background` + ) AS `ipc_received_messages_content_background` + , + ARRAY( + SELECT + STRUCT( + ipc_received_messages_content_foreground.key, ipc_received_messages_content_foreground.value + ) + FROM UNNEST(metrics.labeled_counter.ipc_received_messages_content_foreground) AS `ipc_received_messages_content_foreground` + ) AS `ipc_received_messages_content_foreground` + , + ARRAY( + SELECT + STRUCT( + ipc_received_messages_gpu_process.key, ipc_received_messages_gpu_process.value + ) + FROM UNNEST(metrics.labeled_counter.ipc_received_messages_gpu_process) AS `ipc_received_messages_gpu_process` + ) AS `ipc_received_messages_gpu_process` + , + ARRAY( + SELECT + STRUCT( + ipc_received_messages_parent_active.key, ipc_received_messages_parent_active.value + ) + FROM UNNEST(metrics.labeled_counter.ipc_received_messages_parent_active) AS `ipc_received_messages_parent_active` + ) AS `ipc_received_messages_parent_active` + , + ARRAY( + SELECT + STRUCT( + ipc_received_messages_parent_inactive.key, ipc_received_messages_parent_inactive.value + ) + FROM UNNEST(metrics.labeled_counter.ipc_received_messages_parent_inactive) AS `ipc_received_messages_parent_inactive` + ) AS `ipc_received_messages_parent_inactive` + , + ARRAY( + SELECT + STRUCT( + ipc_sent_messages_content_background.key, ipc_sent_messages_content_background.value + ) + FROM UNNEST(metrics.labeled_counter.ipc_sent_messages_content_background) AS `ipc_sent_messages_content_background` + ) AS `ipc_sent_messages_content_background` + , + ARRAY( + SELECT + STRUCT( + ipc_sent_messages_content_foreground.key, ipc_sent_messages_content_foreground.value + ) + FROM UNNEST(metrics.labeled_counter.ipc_sent_messages_content_foreground) AS `ipc_sent_messages_content_foreground` + ) AS `ipc_sent_messages_content_foreground` + , + ARRAY( + SELECT + STRUCT( + ipc_sent_messages_gpu_process.key, ipc_sent_messages_gpu_process.value + ) + FROM UNNEST(metrics.labeled_counter.ipc_sent_messages_gpu_process) AS `ipc_sent_messages_gpu_process` + ) AS `ipc_sent_messages_gpu_process` + , + ARRAY( + SELECT + STRUCT( + ipc_sent_messages_parent_active.key, ipc_sent_messages_parent_active.value + ) + FROM UNNEST(metrics.labeled_counter.ipc_sent_messages_parent_active) AS `ipc_sent_messages_parent_active` + ) AS `ipc_sent_messages_parent_active` + , + ARRAY( + SELECT + STRUCT( + ipc_sent_messages_parent_inactive.key, ipc_sent_messages_parent_inactive.value + ) + FROM UNNEST(metrics.labeled_counter.ipc_sent_messages_parent_inactive) AS `ipc_sent_messages_parent_inactive` + ) AS `ipc_sent_messages_parent_inactive` + , + ARRAY( + SELECT + STRUCT( + cookie_banners_rule_lookup_by_domain.key, cookie_banners_rule_lookup_by_domain.value + ) + FROM UNNEST(metrics.labeled_counter.cookie_banners_rule_lookup_by_domain) AS `cookie_banners_rule_lookup_by_domain` + ) AS `cookie_banners_rule_lookup_by_domain` + , + ARRAY( + SELECT + STRUCT( + cookie_banners_rule_lookup_by_load.key, cookie_banners_rule_lookup_by_load.value + ) + FROM UNNEST(metrics.labeled_counter.cookie_banners_rule_lookup_by_load) AS `cookie_banners_rule_lookup_by_load` + ) AS `cookie_banners_rule_lookup_by_load` + , + ARRAY( + SELECT + STRUCT( + ping_centre_send_failures_by_namespace.key, ping_centre_send_failures_by_namespace.value + ) + FROM UNNEST(metrics.labeled_counter.ping_centre_send_failures_by_namespace) AS `ping_centre_send_failures_by_namespace` + ) AS `ping_centre_send_failures_by_namespace` + , + ARRAY( + SELECT + STRUCT( + ping_centre_send_successes_by_namespace.key, ping_centre_send_successes_by_namespace.value + ) + FROM UNNEST(metrics.labeled_counter.ping_centre_send_successes_by_namespace) AS `ping_centre_send_successes_by_namespace` + ) AS `ping_centre_send_successes_by_namespace` + , + ARRAY( + SELECT + STRUCT( + network_data_size_pb_per_type.key, network_data_size_pb_per_type.value + ) + FROM UNNEST(metrics.labeled_counter.network_data_size_pb_per_type) AS `network_data_size_pb_per_type` + ) AS `network_data_size_pb_per_type` + , + ARRAY( + SELECT + STRUCT( + network_data_size_per_type.key, network_data_size_per_type.value + ) + FROM UNNEST(metrics.labeled_counter.network_data_size_per_type) AS `network_data_size_per_type` + ) AS `network_data_size_per_type` + , + ARRAY( + SELECT + STRUCT( + networking_speculative_connection_outcome.key, networking_speculative_connection_outcome.value + ) + FROM UNNEST(metrics.labeled_counter.networking_speculative_connection_outcome) AS `networking_speculative_connection_outcome` + ) AS `networking_speculative_connection_outcome` + , + ARRAY( + SELECT + STRUCT( + networking_speculative_connect_outcome.key, networking_speculative_connect_outcome.value + ) + FROM UNNEST(metrics.labeled_counter.networking_speculative_connect_outcome) AS `networking_speculative_connect_outcome` + ) AS `networking_speculative_connect_outcome` + , + ARRAY( + SELECT + STRUCT( + extensions_apis_dnr_startup_cache_entries.key, extensions_apis_dnr_startup_cache_entries.value + ) + FROM UNNEST(metrics.labeled_counter.extensions_apis_dnr_startup_cache_entries) AS `extensions_apis_dnr_startup_cache_entries` + ) AS `extensions_apis_dnr_startup_cache_entries` + , + ARRAY( + SELECT + STRUCT( + networking_cookie_timestamp_fixed_count.key, networking_cookie_timestamp_fixed_count.value + ) + FROM UNNEST(metrics.labeled_counter.networking_cookie_timestamp_fixed_count) AS `networking_cookie_timestamp_fixed_count` + ) AS `networking_cookie_timestamp_fixed_count` + , + ARRAY( + SELECT + STRUCT( + rtcrtpsender_setparameters_blame_length_changed.key, rtcrtpsender_setparameters_blame_length_changed.value + ) + FROM UNNEST(metrics.labeled_counter.rtcrtpsender_setparameters_blame_length_changed) AS `rtcrtpsender_setparameters_blame_length_changed` + ) AS `rtcrtpsender_setparameters_blame_length_changed` + , + ARRAY( + SELECT + STRUCT( + rtcrtpsender_setparameters_blame_no_getparameters.key, rtcrtpsender_setparameters_blame_no_getparameters.value + ) + FROM UNNEST(metrics.labeled_counter.rtcrtpsender_setparameters_blame_no_getparameters) AS `rtcrtpsender_setparameters_blame_no_getparameters` + ) AS `rtcrtpsender_setparameters_blame_no_getparameters` + , + ARRAY( + SELECT + STRUCT( + rtcrtpsender_setparameters_blame_no_transactionid.key, rtcrtpsender_setparameters_blame_no_transactionid.value + ) + FROM UNNEST(metrics.labeled_counter.rtcrtpsender_setparameters_blame_no_transactionid) AS `rtcrtpsender_setparameters_blame_no_transactionid` + ) AS `rtcrtpsender_setparameters_blame_no_transactionid` + , + ARRAY( + SELECT + STRUCT( + rtcrtpsender_setparameters_blame_stale_transactionid.key, rtcrtpsender_setparameters_blame_stale_transactionid.value + ) + FROM UNNEST(metrics.labeled_counter.rtcrtpsender_setparameters_blame_stale_transactionid) AS `rtcrtpsender_setparameters_blame_stale_transactionid` + ) AS `rtcrtpsender_setparameters_blame_stale_transactionid` + , + ARRAY( + SELECT + STRUCT( + dotprint_failure.key, dotprint_failure.value + ) + FROM UNNEST(metrics.labeled_counter.dotprint_failure) AS `dotprint_failure` + ) AS `dotprint_failure` + , + ARRAY( + SELECT + STRUCT( + pdfjs_geckoview.key, pdfjs_geckoview.value + ) + FROM UNNEST(metrics.labeled_counter.pdfjs_geckoview) AS `pdfjs_geckoview` + ) AS `pdfjs_geckoview` + , + ARRAY( + SELECT + STRUCT( + messaging_system_invalid_nested_data.key, messaging_system_invalid_nested_data.value + ) + FROM UNNEST(metrics.labeled_counter.messaging_system_invalid_nested_data) AS `messaging_system_invalid_nested_data` + ) AS `messaging_system_invalid_nested_data` + , + ARRAY( + SELECT + STRUCT( + network_cors_authorization_header.key, network_cors_authorization_header.value + ) + FROM UNNEST(metrics.labeled_counter.network_cors_authorization_header) AS `network_cors_authorization_header` + ) AS `network_cors_authorization_header` + , + ARRAY( + SELECT + STRUCT( + pwmgr_form_autofill_result.key, pwmgr_form_autofill_result.value + ) + FROM UNNEST(metrics.labeled_counter.pwmgr_form_autofill_result) AS `pwmgr_form_autofill_result` + ) AS `pwmgr_form_autofill_result` + , + ARRAY( + SELECT + STRUCT( + extensions_process_event.key, extensions_process_event.value + ) + FROM UNNEST(metrics.labeled_counter.extensions_process_event) AS `extensions_process_event` + ) AS `extensions_process_event` + , + ARRAY( + SELECT + STRUCT( + data_storage_entries.key, data_storage_entries.value + ) + FROM UNNEST(metrics.labeled_counter.data_storage_entries) AS `data_storage_entries` + ) AS `data_storage_entries` + , + ARRAY( + SELECT + STRUCT( + pdfjs_stamp.key, pdfjs_stamp.value + ) + FROM UNNEST(metrics.labeled_counter.pdfjs_stamp) AS `pdfjs_stamp` + ) AS `pdfjs_stamp` + , + ARRAY( + SELECT + STRUCT( + fog_validation_gvsv_audio_stream_init.key, fog_validation_gvsv_audio_stream_init.value + ) + FROM UNNEST(metrics.labeled_counter.fog_validation_gvsv_audio_stream_init) AS `fog_validation_gvsv_audio_stream_init` + ) AS `fog_validation_gvsv_audio_stream_init` + , + ARRAY( + SELECT + STRUCT( + fog_validation_gvsv_audio_stream_init_gecko.key, fog_validation_gvsv_audio_stream_init_gecko.value + ) + FROM UNNEST(metrics.labeled_counter.fog_validation_gvsv_audio_stream_init_gecko) AS `fog_validation_gvsv_audio_stream_init_gecko` + ) AS `fog_validation_gvsv_audio_stream_init_gecko` + , + ARRAY( + SELECT + STRUCT( + search_service_initialization_status.key, search_service_initialization_status.value + ) + FROM UNNEST(metrics.labeled_counter.search_service_initialization_status) AS `search_service_initialization_status` + ) AS `search_service_initialization_status` + , + ARRAY( + SELECT + STRUCT( + extensions_counters_browser_action_preload_result.key, extensions_counters_browser_action_preload_result.value + ) + FROM UNNEST(metrics.labeled_counter.extensions_counters_browser_action_preload_result) AS `extensions_counters_browser_action_preload_result` + ) AS `extensions_counters_browser_action_preload_result` + , + ARRAY( + SELECT + STRUCT( + extensions_counters_event_page_idle_result.key, extensions_counters_event_page_idle_result.value + ) + FROM UNNEST(metrics.labeled_counter.extensions_counters_event_page_idle_result) AS `extensions_counters_event_page_idle_result` + ) AS `extensions_counters_event_page_idle_result` + , + ARRAY( + SELECT + STRUCT( + protocolhandler_mailto_handler_prompt_shown.key, protocolhandler_mailto_handler_prompt_shown.value + ) + FROM UNNEST(metrics.labeled_counter.protocolhandler_mailto_handler_prompt_shown) AS `protocolhandler_mailto_handler_prompt_shown` + ) AS `protocolhandler_mailto_handler_prompt_shown` + , + ARRAY( + SELECT + STRUCT( + protocolhandler_mailto_prompt_clicked.key, protocolhandler_mailto_prompt_clicked.value + ) + FROM UNNEST(metrics.labeled_counter.protocolhandler_mailto_prompt_clicked) AS `protocolhandler_mailto_prompt_clicked` + ) AS `protocolhandler_mailto_prompt_clicked` + , + ARRAY( + SELECT + STRUCT( + networking_residual_cache_folder_removal.key, networking_residual_cache_folder_removal.value + ) + FROM UNNEST(metrics.labeled_counter.networking_residual_cache_folder_removal) AS `networking_residual_cache_folder_removal` + ) AS `networking_residual_cache_folder_removal` + , + ARRAY( + SELECT + STRUCT( + cookie_banners_cmp_detected_cmp.key, cookie_banners_cmp_detected_cmp.value + ) + FROM UNNEST(metrics.labeled_counter.cookie_banners_cmp_detected_cmp) AS `cookie_banners_cmp_detected_cmp` + ) AS `cookie_banners_cmp_detected_cmp` + , + ARRAY( + SELECT + STRUCT( + cookie_banners_cmp_result.key, cookie_banners_cmp_result.value + ) + FROM UNNEST(metrics.labeled_counter.cookie_banners_cmp_result) AS `cookie_banners_cmp_result` + ) AS `cookie_banners_cmp_result` + , + ARRAY( + SELECT + STRUCT( + extensions_startup_cache_read_errors.key, extensions_startup_cache_read_errors.value + ) + FROM UNNEST(metrics.labeled_counter.extensions_startup_cache_read_errors) AS `extensions_startup_cache_read_errors` + ) AS `extensions_startup_cache_read_errors` + , + ARRAY( + SELECT + STRUCT( + networking_trr_request_count.key, networking_trr_request_count.value + ) + FROM UNNEST(metrics.labeled_counter.networking_trr_request_count) AS `networking_trr_request_count` + ) AS `networking_trr_request_count` + , + ARRAY( + SELECT + STRUCT( + codec_stats_audio_preferred_codec.key, codec_stats_audio_preferred_codec.value + ) + FROM UNNEST(metrics.labeled_counter.codec_stats_audio_preferred_codec) AS `codec_stats_audio_preferred_codec` + ) AS `codec_stats_audio_preferred_codec` + , + ARRAY( + SELECT + STRUCT( + codec_stats_other_fec_signaled.key, codec_stats_other_fec_signaled.value + ) + FROM UNNEST(metrics.labeled_counter.codec_stats_other_fec_signaled) AS `codec_stats_other_fec_signaled` + ) AS `codec_stats_other_fec_signaled` + , + ARRAY( + SELECT + STRUCT( + codec_stats_ulpfec_negotiated.key, codec_stats_ulpfec_negotiated.value + ) + FROM UNNEST(metrics.labeled_counter.codec_stats_ulpfec_negotiated) AS `codec_stats_ulpfec_negotiated` + ) AS `codec_stats_ulpfec_negotiated` + , + ARRAY( + SELECT + STRUCT( + codec_stats_video_preferred_codec.key, codec_stats_video_preferred_codec.value + ) + FROM UNNEST(metrics.labeled_counter.codec_stats_video_preferred_codec) AS `codec_stats_video_preferred_codec` + ) AS `codec_stats_video_preferred_codec` + , + ARRAY( + SELECT + STRUCT( + gpu_process_crash_fallbacks.key, gpu_process_crash_fallbacks.value + ) + FROM UNNEST(metrics.labeled_counter.gpu_process_crash_fallbacks) AS `gpu_process_crash_fallbacks` + ) AS `gpu_process_crash_fallbacks` + , + ARRAY( + SELECT + STRUCT( + formautofill_form_submission_heuristic.key, formautofill_form_submission_heuristic.value + ) + FROM UNNEST(metrics.labeled_counter.formautofill_form_submission_heuristic) AS `formautofill_form_submission_heuristic` + ) AS `formautofill_form_submission_heuristic` + , + ARRAY( + SELECT + STRUCT( + networking_http_channel_onstart_success_https_rr.key, networking_http_channel_onstart_success_https_rr.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_channel_onstart_success_https_rr) AS `networking_http_channel_onstart_success_https_rr` + ) AS `networking_http_channel_onstart_success_https_rr` + , + ARRAY( + SELECT + STRUCT( + networking_https_rr_presented.key, networking_https_rr_presented.value + ) + FROM UNNEST(metrics.labeled_counter.networking_https_rr_presented) AS `networking_https_rr_presented` + ) AS `networking_https_rr_presented` + , + ARRAY( + SELECT + STRUCT( + networking_https_upgrade_with_https_rr.key, networking_https_upgrade_with_https_rr.value + ) + FROM UNNEST(metrics.labeled_counter.networking_https_upgrade_with_https_rr) AS `networking_https_upgrade_with_https_rr` + ) AS `networking_https_upgrade_with_https_rr` + , + ARRAY( + SELECT + STRUCT( + gfx_content_frame_time_reason.key, gfx_content_frame_time_reason.value + ) + FROM UNNEST(metrics.labeled_counter.gfx_content_frame_time_reason) AS `gfx_content_frame_time_reason` + ) AS `gfx_content_frame_time_reason` + , + ARRAY( + SELECT + STRUCT( + networking_dns_native_count.key, networking_dns_native_count.value + ) + FROM UNNEST(metrics.labeled_counter.networking_dns_native_count) AS `networking_dns_native_count` + ) AS `networking_dns_native_count` + , + ARRAY( + SELECT + STRUCT( + networking_http_response_version.key, networking_http_response_version.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_response_version) AS `networking_http_response_version` + ) AS `networking_http_response_version` + , + ARRAY( + SELECT + STRUCT( + tls_xyber_intolerance_reason.key, tls_xyber_intolerance_reason.value + ) + FROM UNNEST(metrics.labeled_counter.tls_xyber_intolerance_reason) AS `tls_xyber_intolerance_reason` + ) AS `tls_xyber_intolerance_reason` + , + ARRAY( + SELECT + STRUCT( + media_audio_backend.key, media_audio_backend.value + ) + FROM UNNEST(metrics.labeled_counter.media_audio_backend) AS `media_audio_backend` + ) AS `media_audio_backend` + , + ARRAY( + SELECT + STRUCT( + media_audio_init_failure.key, media_audio_init_failure.value + ) + FROM UNNEST(metrics.labeled_counter.media_audio_init_failure) AS `media_audio_init_failure` + ) AS `media_audio_init_failure` + , + ARRAY( + SELECT + STRUCT( + avif_a1lx.key, avif_a1lx.value + ) + FROM UNNEST(metrics.labeled_counter.avif_a1lx) AS `avif_a1lx` + ) AS `avif_a1lx` + , + ARRAY( + SELECT + STRUCT( + avif_a1op.key, avif_a1op.value + ) + FROM UNNEST(metrics.labeled_counter.avif_a1op) AS `avif_a1op` + ) AS `avif_a1op` + , + ARRAY( + SELECT + STRUCT( + avif_alpha.key, avif_alpha.value + ) + FROM UNNEST(metrics.labeled_counter.avif_alpha) AS `avif_alpha` + ) AS `avif_alpha` + , + ARRAY( + SELECT + STRUCT( + avif_aom_decode_error.key, avif_aom_decode_error.value + ) + FROM UNNEST(metrics.labeled_counter.avif_aom_decode_error) AS `avif_aom_decode_error` + ) AS `avif_aom_decode_error` + , + ARRAY( + SELECT + STRUCT( + avif_bit_depth.key, avif_bit_depth.value + ) + FROM UNNEST(metrics.labeled_counter.avif_bit_depth) AS `avif_bit_depth` + ) AS `avif_bit_depth` + , + ARRAY( + SELECT + STRUCT( + avif_cicp_cp.key, avif_cicp_cp.value + ) + FROM UNNEST(metrics.labeled_counter.avif_cicp_cp) AS `avif_cicp_cp` + ) AS `avif_cicp_cp` + , + ARRAY( + SELECT + STRUCT( + avif_cicp_mc.key, avif_cicp_mc.value + ) + FROM UNNEST(metrics.labeled_counter.avif_cicp_mc) AS `avif_cicp_mc` + ) AS `avif_cicp_mc` + , + ARRAY( + SELECT + STRUCT( + avif_cicp_tc.key, avif_cicp_tc.value + ) + FROM UNNEST(metrics.labeled_counter.avif_cicp_tc) AS `avif_cicp_tc` + ) AS `avif_cicp_tc` + , + ARRAY( + SELECT + STRUCT( + avif_clap.key, avif_clap.value + ) + FROM UNNEST(metrics.labeled_counter.avif_clap) AS `avif_clap` + ) AS `avif_clap` + , + ARRAY( + SELECT + STRUCT( + avif_colr.key, avif_colr.value + ) + FROM UNNEST(metrics.labeled_counter.avif_colr) AS `avif_colr` + ) AS `avif_colr` + , + ARRAY( + SELECT + STRUCT( + avif_decode_result.key, avif_decode_result.value + ) + FROM UNNEST(metrics.labeled_counter.avif_decode_result) AS `avif_decode_result` + ) AS `avif_decode_result` + , + ARRAY( + SELECT + STRUCT( + avif_decoder.key, avif_decoder.value + ) + FROM UNNEST(metrics.labeled_counter.avif_decoder) AS `avif_decoder` + ) AS `avif_decoder` + , + ARRAY( + SELECT + STRUCT( + avif_grid.key, avif_grid.value + ) + FROM UNNEST(metrics.labeled_counter.avif_grid) AS `avif_grid` + ) AS `avif_grid` + , + ARRAY( + SELECT + STRUCT( + avif_ipro.key, avif_ipro.value + ) + FROM UNNEST(metrics.labeled_counter.avif_ipro) AS `avif_ipro` + ) AS `avif_ipro` + , + ARRAY( + SELECT + STRUCT( + avif_ispe.key, avif_ispe.value + ) + FROM UNNEST(metrics.labeled_counter.avif_ispe) AS `avif_ispe` + ) AS `avif_ispe` + , + ARRAY( + SELECT + STRUCT( + avif_lsel.key, avif_lsel.value + ) + FROM UNNEST(metrics.labeled_counter.avif_lsel) AS `avif_lsel` + ) AS `avif_lsel` + , + ARRAY( + SELECT + STRUCT( + avif_pasp.key, avif_pasp.value + ) + FROM UNNEST(metrics.labeled_counter.avif_pasp) AS `avif_pasp` + ) AS `avif_pasp` + , + ARRAY( + SELECT + STRUCT( + avif_pixi.key, avif_pixi.value + ) + FROM UNNEST(metrics.labeled_counter.avif_pixi) AS `avif_pixi` + ) AS `avif_pixi` + , + ARRAY( + SELECT + STRUCT( + avif_yuv_color_space.key, avif_yuv_color_space.value + ) + FROM UNNEST(metrics.labeled_counter.avif_yuv_color_space) AS `avif_yuv_color_space` + ) AS `avif_yuv_color_space` + , + ARRAY( + SELECT + STRUCT( + networking_proxy_info_type.key, networking_proxy_info_type.value + ) + FROM UNNEST(metrics.labeled_counter.networking_proxy_info_type) AS `networking_proxy_info_type` + ) AS `networking_proxy_info_type` + , + ARRAY( + SELECT + STRUCT( + pdfjs_editing_highlight_color.key, pdfjs_editing_highlight_color.value + ) + FROM UNNEST(metrics.labeled_counter.pdfjs_editing_highlight_color) AS `pdfjs_editing_highlight_color` + ) AS `pdfjs_editing_highlight_color` + , + ARRAY( + SELECT + STRUCT( + pdfjs_editing_highlight_kind.key, pdfjs_editing_highlight_kind.value + ) + FROM UNNEST(metrics.labeled_counter.pdfjs_editing_highlight_kind) AS `pdfjs_editing_highlight_kind` + ) AS `pdfjs_editing_highlight_kind` + , + ARRAY( + SELECT + STRUCT( + pdfjs_editing_highlight_method.key, pdfjs_editing_highlight_method.value + ) + FROM UNNEST(metrics.labeled_counter.pdfjs_editing_highlight_method) AS `pdfjs_editing_highlight_method` + ) AS `pdfjs_editing_highlight_method` + , + ARRAY( + SELECT + STRUCT( + pdfjs_editing_highlight_number_of_colors.key, pdfjs_editing_highlight_number_of_colors.value + ) + FROM UNNEST(metrics.labeled_counter.pdfjs_editing_highlight_number_of_colors) AS `pdfjs_editing_highlight_number_of_colors` + ) AS `pdfjs_editing_highlight_number_of_colors` + , + ARRAY( + SELECT + STRUCT( + cert_verifier_crlite_status.key, cert_verifier_crlite_status.value + ) + FROM UNNEST(metrics.labeled_counter.cert_verifier_crlite_status) AS `cert_verifier_crlite_status` + ) AS `cert_verifier_crlite_status` + , + ARRAY( + SELECT + STRUCT( + webrtcdtls_cipher.key, webrtcdtls_cipher.value + ) + FROM UNNEST(metrics.labeled_counter.webrtcdtls_cipher) AS `webrtcdtls_cipher` + ) AS `webrtcdtls_cipher` + , + ARRAY( + SELECT + STRUCT( + webrtcdtls_client_handshake_result.key, webrtcdtls_client_handshake_result.value + ) + FROM UNNEST(metrics.labeled_counter.webrtcdtls_client_handshake_result) AS `webrtcdtls_client_handshake_result` + ) AS `webrtcdtls_client_handshake_result` + , + ARRAY( + SELECT + STRUCT( + webrtcdtls_protocol_version.key, webrtcdtls_protocol_version.value + ) + FROM UNNEST(metrics.labeled_counter.webrtcdtls_protocol_version) AS `webrtcdtls_protocol_version` + ) AS `webrtcdtls_protocol_version` + , + ARRAY( + SELECT + STRUCT( + webrtcdtls_server_handshake_result.key, webrtcdtls_server_handshake_result.value + ) + FROM UNNEST(metrics.labeled_counter.webrtcdtls_server_handshake_result) AS `webrtcdtls_server_handshake_result` + ) AS `webrtcdtls_server_handshake_result` + , + ARRAY( + SELECT + STRUCT( + webrtcdtls_srtp_cipher.key, webrtcdtls_srtp_cipher.value + ) + FROM UNNEST(metrics.labeled_counter.webrtcdtls_srtp_cipher) AS `webrtcdtls_srtp_cipher` + ) AS `webrtcdtls_srtp_cipher` + , + ARRAY( + SELECT + STRUCT( + media_playback_not_supported_video_per_mime_type.key, media_playback_not_supported_video_per_mime_type.value + ) + FROM UNNEST(metrics.labeled_counter.media_playback_not_supported_video_per_mime_type) AS `media_playback_not_supported_video_per_mime_type` + ) AS `media_playback_not_supported_video_per_mime_type` + , + ARRAY( + SELECT + STRUCT( + power_energy_per_process_type.key, power_energy_per_process_type.value + ) + FROM UNNEST(metrics.labeled_counter.power_energy_per_process_type) AS `power_energy_per_process_type` + ) AS `power_energy_per_process_type` + , + ARRAY( + SELECT + STRUCT( + bounce_tracking_protection_purge_count.key, bounce_tracking_protection_purge_count.value + ) + FROM UNNEST(metrics.labeled_counter.bounce_tracking_protection_purge_count) AS `bounce_tracking_protection_purge_count` + ) AS `bounce_tracking_protection_purge_count` + , + ARRAY( + SELECT + STRUCT( + network_tls_early_data_accepted.key, network_tls_early_data_accepted.value + ) + FROM UNNEST(metrics.labeled_counter.network_tls_early_data_accepted) AS `network_tls_early_data_accepted` + ) AS `network_tls_early_data_accepted` + , + ARRAY( + SELECT + STRUCT( + network_tls_early_data_negotiated.key, network_tls_early_data_negotiated.value + ) + FROM UNNEST(metrics.labeled_counter.network_tls_early_data_negotiated) AS `network_tls_early_data_negotiated` + ) AS `network_tls_early_data_negotiated` + , + ARRAY( + SELECT + STRUCT( + networking_http_redirect_to_scheme_subresource.key, networking_http_redirect_to_scheme_subresource.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_redirect_to_scheme_subresource) AS `networking_http_redirect_to_scheme_subresource` + ) AS `networking_http_redirect_to_scheme_subresource` + , + ARRAY( + SELECT + STRUCT( + networking_http_redirect_to_scheme_top_level.key, networking_http_redirect_to_scheme_top_level.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_redirect_to_scheme_top_level) AS `networking_http_redirect_to_scheme_top_level` + ) AS `networking_http_redirect_to_scheme_top_level` + , + ARRAY( + SELECT + STRUCT( + translations_request_count.key, translations_request_count.value + ) + FROM UNNEST(metrics.labeled_counter.translations_request_count) AS `translations_request_count` + ) AS `translations_request_count` + , + ARRAY( + SELECT + STRUCT( + cert_compression_failures.key, cert_compression_failures.value + ) + FROM UNNEST(metrics.labeled_counter.cert_compression_failures) AS `cert_compression_failures` + ) AS `cert_compression_failures` + , + ARRAY( + SELECT + STRUCT( + cert_compression_used.key, cert_compression_used.value + ) + FROM UNNEST(metrics.labeled_counter.cert_compression_used) AS `cert_compression_used` + ) AS `cert_compression_used` + , + ARRAY( + SELECT + STRUCT( + webauthn_create_authenticator_attachment.key, webauthn_create_authenticator_attachment.value + ) + FROM UNNEST(metrics.labeled_counter.webauthn_create_authenticator_attachment) AS `webauthn_create_authenticator_attachment` + ) AS `webauthn_create_authenticator_attachment` + , + ARRAY( + SELECT + STRUCT( + webauthn_get_authenticator_attachment.key, webauthn_get_authenticator_attachment.value + ) + FROM UNNEST(metrics.labeled_counter.webauthn_get_authenticator_attachment) AS `webauthn_get_authenticator_attachment` + ) AS `webauthn_get_authenticator_attachment` + , + ARRAY( + SELECT + STRUCT( + crash_submission_collector_errors.key, crash_submission_collector_errors.value + ) + FROM UNNEST(metrics.labeled_counter.crash_submission_collector_errors) AS `crash_submission_collector_errors` + ) AS `crash_submission_collector_errors` + , + ARRAY( + SELECT + STRUCT( + private_attribution_database.key, private_attribution_database.value + ) + FROM UNNEST(metrics.labeled_counter.private_attribution_database) AS `private_attribution_database` + ) AS `private_attribution_database` + , + ARRAY( + SELECT + STRUCT( + private_attribution_measure_conversion.key, private_attribution_measure_conversion.value + ) + FROM UNNEST(metrics.labeled_counter.private_attribution_measure_conversion) AS `private_attribution_measure_conversion` + ) AS `private_attribution_measure_conversion` + , + ARRAY( + SELECT + STRUCT( + private_attribution_save_impression.key, private_attribution_save_impression.value + ) + FROM UNNEST(metrics.labeled_counter.private_attribution_save_impression) AS `private_attribution_save_impression` + ) AS `private_attribution_save_impression` + , + ARRAY( + SELECT + STRUCT( + network_byte_range_request.key, network_byte_range_request.value + ) + FROM UNNEST(metrics.labeled_counter.network_byte_range_request) AS `network_byte_range_request` + ) AS `network_byte_range_request` + , + ARRAY( + SELECT + STRUCT( + networking_http_channel_disposition.key, networking_http_channel_disposition.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_channel_disposition) AS `networking_http_channel_disposition` + ) AS `networking_http_channel_disposition` + , + ARRAY( + SELECT + STRUCT( + networking_http_channel_disposition_disabled_no_reason.key, networking_http_channel_disposition_disabled_no_reason.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_channel_disposition_disabled_no_reason) AS `networking_http_channel_disposition_disabled_no_reason` + ) AS `networking_http_channel_disposition_disabled_no_reason` + , + ARRAY( + SELECT + STRUCT( + networking_http_channel_disposition_disabled_upgrade.key, networking_http_channel_disposition_disabled_upgrade.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_channel_disposition_disabled_upgrade) AS `networking_http_channel_disposition_disabled_upgrade` + ) AS `networking_http_channel_disposition_disabled_upgrade` + , + ARRAY( + SELECT + STRUCT( + networking_http_channel_disposition_disabled_wont.key, networking_http_channel_disposition_disabled_wont.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_channel_disposition_disabled_wont) AS `networking_http_channel_disposition_disabled_wont` + ) AS `networking_http_channel_disposition_disabled_wont` + , + ARRAY( + SELECT + STRUCT( + networking_http_channel_disposition_enabled_no_reason.key, networking_http_channel_disposition_enabled_no_reason.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_channel_disposition_enabled_no_reason) AS `networking_http_channel_disposition_enabled_no_reason` + ) AS `networking_http_channel_disposition_enabled_no_reason` + , + ARRAY( + SELECT + STRUCT( + networking_http_channel_disposition_enabled_upgrade.key, networking_http_channel_disposition_enabled_upgrade.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_channel_disposition_enabled_upgrade) AS `networking_http_channel_disposition_enabled_upgrade` + ) AS `networking_http_channel_disposition_enabled_upgrade` + , + ARRAY( + SELECT + STRUCT( + networking_http_channel_disposition_enabled_wont.key, networking_http_channel_disposition_enabled_wont.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_channel_disposition_enabled_wont) AS `networking_http_channel_disposition_enabled_wont` + ) AS `networking_http_channel_disposition_enabled_wont` + , + ARRAY( + SELECT + STRUCT( + networking_http_channel_onstart_status.key, networking_http_channel_onstart_status.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_channel_onstart_status) AS `networking_http_channel_onstart_status` + ) AS `networking_http_channel_onstart_status` + , + ARRAY( + SELECT + STRUCT( + networking_http_to_https_upgrade_reason.key, networking_http_to_https_upgrade_reason.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_to_https_upgrade_reason) AS `networking_http_to_https_upgrade_reason` + ) AS `networking_http_to_https_upgrade_reason` + , + ARRAY( + SELECT + STRUCT( + networking_http_response_status_code.key, networking_http_response_status_code.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_response_status_code) AS `networking_http_response_status_code` + ) AS `networking_http_response_status_code` + , + ARRAY( + SELECT + STRUCT( + netwerk_eh_response_version.key, netwerk_eh_response_version.value + ) + FROM UNNEST(metrics.labeled_counter.netwerk_eh_response_version) AS `netwerk_eh_response_version` + ) AS `netwerk_eh_response_version` + , + ARRAY( + SELECT + STRUCT( + crash_submission_channel_status.key, crash_submission_channel_status.value + ) + FROM UNNEST(metrics.labeled_counter.crash_submission_channel_status) AS `crash_submission_channel_status` + ) AS `crash_submission_channel_status` + , + ARRAY( + SELECT + STRUCT( + geolocation_fallback.key, geolocation_fallback.value + ) + FROM UNNEST(metrics.labeled_counter.geolocation_fallback) AS `geolocation_fallback` + ) AS `geolocation_fallback` + , + ARRAY( + SELECT + STRUCT( + geolocation_request_result.key, geolocation_request_result.value + ) + FROM UNNEST(metrics.labeled_counter.geolocation_request_result) AS `geolocation_request_result` + ) AS `geolocation_request_result` + , + ARRAY( + SELECT + STRUCT( + serp_ads_blocked_count.key, serp_ads_blocked_count.value + ) + FROM UNNEST(metrics.labeled_counter.serp_ads_blocked_count) AS `serp_ads_blocked_count` + ) AS `serp_ads_blocked_count` + , + ARRAY( + SELECT + STRUCT( + cert_verifier_cert_revocation_mechanisms.key, cert_verifier_cert_revocation_mechanisms.value + ) + FROM UNNEST(metrics.labeled_counter.cert_verifier_cert_revocation_mechanisms) AS `cert_verifier_cert_revocation_mechanisms` + ) AS `cert_verifier_cert_revocation_mechanisms` + , + ARRAY( + SELECT + STRUCT( + cert_verifier_crlite_vs_ocsp_result.key, cert_verifier_crlite_vs_ocsp_result.value + ) + FROM UNNEST(metrics.labeled_counter.cert_verifier_crlite_vs_ocsp_result) AS `cert_verifier_crlite_vs_ocsp_result` + ) AS `cert_verifier_crlite_vs_ocsp_result` + , + ARRAY( + SELECT + STRUCT( + pdfjs_image_added.key, pdfjs_image_added.value + ) + FROM UNNEST(metrics.labeled_counter.pdfjs_image_added) AS `pdfjs_image_added` + ) AS `pdfjs_image_added` + , + ARRAY( + SELECT + STRUCT( + networking_fetch_keepalive_discard_count.key, networking_fetch_keepalive_discard_count.value + ) + FROM UNNEST(metrics.labeled_counter.networking_fetch_keepalive_discard_count) AS `networking_fetch_keepalive_discard_count` + ) AS `networking_fetch_keepalive_discard_count` + , + ARRAY( + SELECT + STRUCT( + networking_fetch_keepalive_request_count.key, networking_fetch_keepalive_request_count.value + ) + FROM UNNEST(metrics.labeled_counter.networking_fetch_keepalive_request_count) AS `networking_fetch_keepalive_request_count` + ) AS `networking_fetch_keepalive_request_count` + , + ARRAY( + SELECT + STRUCT( + network_system_channel_addon_status.key, network_system_channel_addon_status.value + ) + FROM UNNEST(metrics.labeled_counter.network_system_channel_addon_status) AS `network_system_channel_addon_status` + ) AS `network_system_channel_addon_status` + , + ARRAY( + SELECT + STRUCT( + network_system_channel_other_status.key, network_system_channel_other_status.value + ) + FROM UNNEST(metrics.labeled_counter.network_system_channel_other_status) AS `network_system_channel_other_status` + ) AS `network_system_channel_other_status` + , + ARRAY( + SELECT + STRUCT( + network_system_channel_remote_settings_status.key, network_system_channel_remote_settings_status.value + ) + FROM UNNEST(metrics.labeled_counter.network_system_channel_remote_settings_status) AS `network_system_channel_remote_settings_status` + ) AS `network_system_channel_remote_settings_status` + , + ARRAY( + SELECT + STRUCT( + network_system_channel_success_or_failure.key, network_system_channel_success_or_failure.value + ) + FROM UNNEST(metrics.labeled_counter.network_system_channel_success_or_failure) AS `network_system_channel_success_or_failure` + ) AS `network_system_channel_success_or_failure` + , + ARRAY( + SELECT + STRUCT( + network_system_channel_telemetry_status.key, network_system_channel_telemetry_status.value + ) + FROM UNNEST(metrics.labeled_counter.network_system_channel_telemetry_status) AS `network_system_channel_telemetry_status` + ) AS `network_system_channel_telemetry_status` + , + ARRAY( + SELECT + STRUCT( + network_system_channel_update_status.key, network_system_channel_update_status.value + ) + FROM UNNEST(metrics.labeled_counter.network_system_channel_update_status) AS `network_system_channel_update_status` + ) AS `network_system_channel_update_status` + , + ARRAY( + SELECT + STRUCT( + network_system_channel_addonversion_status.key, network_system_channel_addonversion_status.value + ) + FROM UNNEST(metrics.labeled_counter.network_system_channel_addonversion_status) AS `network_system_channel_addonversion_status` + ) AS `network_system_channel_addonversion_status` + , + ARRAY( + SELECT + STRUCT( + networking_trr_request_count_per_conn.key, networking_trr_request_count_per_conn.value + ) + FROM UNNEST(metrics.labeled_counter.networking_trr_request_count_per_conn) AS `networking_trr_request_count_per_conn` + ) AS `networking_trr_request_count_per_conn` + , + ARRAY( + SELECT + STRUCT( + networking_http_3_ecn_path_capability.key, networking_http_3_ecn_path_capability.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_3_ecn_path_capability) AS `networking_http_3_ecn_path_capability` + ) AS `networking_http_3_ecn_path_capability` + , + ARRAY( + SELECT + STRUCT( + netwerk_http3_0rtt_state.key, netwerk_http3_0rtt_state.value + ) + FROM UNNEST(metrics.labeled_counter.netwerk_http3_0rtt_state) AS `netwerk_http3_0rtt_state` + ) AS `netwerk_http3_0rtt_state` + , + ARRAY( + SELECT + STRUCT( + netwerk_http3_ech_outcome_grease.key, netwerk_http3_ech_outcome_grease.value + ) + FROM UNNEST(metrics.labeled_counter.netwerk_http3_ech_outcome_grease) AS `netwerk_http3_ech_outcome_grease` + ) AS `netwerk_http3_ech_outcome_grease` + , + ARRAY( + SELECT + STRUCT( + netwerk_http3_ech_outcome_none.key, netwerk_http3_ech_outcome_none.value + ) + FROM UNNEST(metrics.labeled_counter.netwerk_http3_ech_outcome_none) AS `netwerk_http3_ech_outcome_none` + ) AS `netwerk_http3_ech_outcome_none` + , + ARRAY( + SELECT + STRUCT( + netwerk_http3_ech_outcome_real.key, netwerk_http3_ech_outcome_real.value + ) + FROM UNNEST(metrics.labeled_counter.netwerk_http3_ech_outcome_real) AS `netwerk_http3_ech_outcome_real` + ) AS `netwerk_http3_ech_outcome_real` + , + ARRAY( + SELECT + STRUCT( + web_notification_permission_origin.key, web_notification_permission_origin.value + ) + FROM UNNEST(metrics.labeled_counter.web_notification_permission_origin) AS `web_notification_permission_origin` + ) AS `web_notification_permission_origin` + , + ARRAY( + SELECT + STRUCT( + web_notification_request_permission_origin.key, web_notification_request_permission_origin.value + ) + FROM UNNEST(metrics.labeled_counter.web_notification_request_permission_origin) AS `web_notification_request_permission_origin` + ) AS `web_notification_request_permission_origin` + , + ARRAY( + SELECT + STRUCT( + web_notification_show_origin.key, web_notification_show_origin.value + ) + FROM UNNEST(metrics.labeled_counter.web_notification_show_origin) AS `web_notification_show_origin` + ) AS `web_notification_show_origin` + , + ARRAY( + SELECT + STRUCT( + networking_http_ip_addr_any_count.key, networking_http_ip_addr_any_count.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_ip_addr_any_count) AS `networking_http_ip_addr_any_count` + ) AS `networking_http_ip_addr_any_count` + , + ARRAY( + SELECT + STRUCT( + library_link.key, library_link.value + ) + FROM UNNEST(metrics.labeled_counter.library_link) AS `library_link` + ) AS `library_link` + , + ARRAY( + SELECT + STRUCT( + library_opened.key, library_opened.value + ) + FROM UNNEST(metrics.labeled_counter.library_opened) AS `library_opened` + ) AS `library_opened` + , + ARRAY( + SELECT + STRUCT( + library_search.key, library_search.value + ) + FROM UNNEST(metrics.labeled_counter.library_search) AS `library_search` + ) AS `library_search` + , + ARRAY( + SELECT + STRUCT( + sidebar_link.key, sidebar_link.value + ) + FROM UNNEST(metrics.labeled_counter.sidebar_link) AS `sidebar_link` + ) AS `sidebar_link` + , + ARRAY( + SELECT + STRUCT( + sidebar_search.key, sidebar_search.value + ) + FROM UNNEST(metrics.labeled_counter.sidebar_search) AS `sidebar_search` + ) AS `sidebar_search` + , + ARRAY( + SELECT + STRUCT( + media_decode_error_per_mime_type.key, media_decode_error_per_mime_type.value + ) + FROM UNNEST(metrics.labeled_counter.media_decode_error_per_mime_type) AS `media_decode_error_per_mime_type` + ) AS `media_decode_error_per_mime_type` + , + ARRAY( + SELECT + STRUCT( + networking_data_transferred_v3_kb.key, networking_data_transferred_v3_kb.value + ) + FROM UNNEST(metrics.labeled_counter.networking_data_transferred_v3_kb) AS `networking_data_transferred_v3_kb` + ) AS `networking_data_transferred_v3_kb` + , + ARRAY( + SELECT + STRUCT( + networking_trr_connection_cycle_count.key, networking_trr_connection_cycle_count.value + ) + FROM UNNEST(metrics.labeled_counter.networking_trr_connection_cycle_count) AS `networking_trr_connection_cycle_count` + ) AS `networking_trr_connection_cycle_count` + , + ARRAY( + SELECT + STRUCT( + webrtc_video_recv_codec_used.key, webrtc_video_recv_codec_used.value + ) + FROM UNNEST(metrics.labeled_counter.webrtc_video_recv_codec_used) AS `webrtc_video_recv_codec_used` + ) AS `webrtc_video_recv_codec_used` + , + ARRAY( + SELECT + STRUCT( + webrtc_video_send_codec_used.key, webrtc_video_send_codec_used.value + ) + FROM UNNEST(metrics.labeled_counter.webrtc_video_send_codec_used) AS `webrtc_video_send_codec_used` + ) AS `webrtc_video_send_codec_used` + , + ARRAY( + SELECT + STRUCT( + migration_discovered_migrators.key, migration_discovered_migrators.value + ) + FROM UNNEST(metrics.labeled_counter.migration_discovered_migrators) AS `migration_discovered_migrators` + ) AS `migration_discovered_migrators` + , + ARRAY( + SELECT + STRUCT( + os_environment_invoked_to_handle.key, os_environment_invoked_to_handle.value + ) + FROM UNNEST(metrics.labeled_counter.os_environment_invoked_to_handle) AS `os_environment_invoked_to_handle` + ) AS `os_environment_invoked_to_handle` + , + ARRAY( + SELECT + STRUCT( + os_environment_launched_to_handle.key, os_environment_launched_to_handle.value + ) + FROM UNNEST(metrics.labeled_counter.os_environment_launched_to_handle) AS `os_environment_launched_to_handle` + ) AS `os_environment_launched_to_handle` + , + ARRAY( + SELECT + STRUCT( + security_client_auth_cert_usage.key, security_client_auth_cert_usage.value + ) + FROM UNNEST(metrics.labeled_counter.security_client_auth_cert_usage) AS `security_client_auth_cert_usage` + ) AS `security_client_auth_cert_usage` + , + ARRAY( + SELECT + STRUCT( + printing_error.key, printing_error.value + ) + FROM UNNEST(metrics.labeled_counter.printing_error) AS `printing_error` + ) AS `printing_error` + , + ARRAY( + SELECT + STRUCT( + printing_settings_changed.key, printing_settings_changed.value + ) + FROM UNNEST(metrics.labeled_counter.printing_settings_changed) AS `printing_settings_changed` + ) AS `printing_settings_changed` + , + ARRAY( + SELECT + STRUCT( + printing_target_type.key, printing_target_type.value + ) + FROM UNNEST(metrics.labeled_counter.printing_target_type) AS `printing_target_type` + ) AS `printing_target_type` + , + ARRAY( + SELECT + STRUCT( + browser_engagement_navigation_about_home.key, browser_engagement_navigation_about_home.value + ) + FROM UNNEST(metrics.labeled_counter.browser_engagement_navigation_about_home) AS `browser_engagement_navigation_about_home` + ) AS `browser_engagement_navigation_about_home` + , + ARRAY( + SELECT + STRUCT( + browser_engagement_navigation_about_newtab.key, browser_engagement_navigation_about_newtab.value + ) + FROM UNNEST(metrics.labeled_counter.browser_engagement_navigation_about_newtab) AS `browser_engagement_navigation_about_newtab` + ) AS `browser_engagement_navigation_about_newtab` + , + ARRAY( + SELECT + STRUCT( + browser_engagement_navigation_contextmenu.key, browser_engagement_navigation_contextmenu.value + ) + FROM UNNEST(metrics.labeled_counter.browser_engagement_navigation_contextmenu) AS `browser_engagement_navigation_contextmenu` + ) AS `browser_engagement_navigation_contextmenu` + , + ARRAY( + SELECT + STRUCT( + browser_engagement_navigation_searchbar.key, browser_engagement_navigation_searchbar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_engagement_navigation_searchbar) AS `browser_engagement_navigation_searchbar` + ) AS `browser_engagement_navigation_searchbar` + , + ARRAY( + SELECT + STRUCT( + browser_engagement_navigation_urlbar.key, browser_engagement_navigation_urlbar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_engagement_navigation_urlbar) AS `browser_engagement_navigation_urlbar` + ) AS `browser_engagement_navigation_urlbar` + , + ARRAY( + SELECT + STRUCT( + browser_engagement_navigation_urlbar_handoff.key, browser_engagement_navigation_urlbar_handoff.value + ) + FROM UNNEST(metrics.labeled_counter.browser_engagement_navigation_urlbar_handoff) AS `browser_engagement_navigation_urlbar_handoff` + ) AS `browser_engagement_navigation_urlbar_handoff` + , + ARRAY( + SELECT + STRUCT( + browser_engagement_navigation_urlbar_persisted.key, browser_engagement_navigation_urlbar_persisted.value + ) + FROM UNNEST(metrics.labeled_counter.browser_engagement_navigation_urlbar_persisted) AS `browser_engagement_navigation_urlbar_persisted` + ) AS `browser_engagement_navigation_urlbar_persisted` + , + ARRAY( + SELECT + STRUCT( + browser_engagement_navigation_urlbar_searchmode.key, browser_engagement_navigation_urlbar_searchmode.value + ) + FROM UNNEST(metrics.labeled_counter.browser_engagement_navigation_urlbar_searchmode) AS `browser_engagement_navigation_urlbar_searchmode` + ) AS `browser_engagement_navigation_urlbar_searchmode` + , + ARRAY( + SELECT + STRUCT( + browser_engagement_navigation_webextension.key, browser_engagement_navigation_webextension.value + ) + FROM UNNEST(metrics.labeled_counter.browser_engagement_navigation_webextension) AS `browser_engagement_navigation_webextension` + ) AS `browser_engagement_navigation_webextension` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_about_home.key, browser_search_adclicks_about_home.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_about_home) AS `browser_search_adclicks_about_home` + ) AS `browser_search_adclicks_about_home` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_about_newtab.key, browser_search_adclicks_about_newtab.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_about_newtab) AS `browser_search_adclicks_about_newtab` + ) AS `browser_search_adclicks_about_newtab` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_contextmenu.key, browser_search_adclicks_contextmenu.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_contextmenu) AS `browser_search_adclicks_contextmenu` + ) AS `browser_search_adclicks_contextmenu` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_reload.key, browser_search_adclicks_reload.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_reload) AS `browser_search_adclicks_reload` + ) AS `browser_search_adclicks_reload` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_searchbar.key, browser_search_adclicks_searchbar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_searchbar) AS `browser_search_adclicks_searchbar` + ) AS `browser_search_adclicks_searchbar` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_system.key, browser_search_adclicks_system.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_system) AS `browser_search_adclicks_system` + ) AS `browser_search_adclicks_system` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_tabhistory.key, browser_search_adclicks_tabhistory.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_tabhistory) AS `browser_search_adclicks_tabhistory` + ) AS `browser_search_adclicks_tabhistory` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_unknown.key, browser_search_adclicks_unknown.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_unknown) AS `browser_search_adclicks_unknown` + ) AS `browser_search_adclicks_unknown` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_urlbar.key, browser_search_adclicks_urlbar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_urlbar) AS `browser_search_adclicks_urlbar` + ) AS `browser_search_adclicks_urlbar` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_urlbar_handoff.key, browser_search_adclicks_urlbar_handoff.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_urlbar_handoff) AS `browser_search_adclicks_urlbar_handoff` + ) AS `browser_search_adclicks_urlbar_handoff` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_urlbar_persisted.key, browser_search_adclicks_urlbar_persisted.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_urlbar_persisted) AS `browser_search_adclicks_urlbar_persisted` + ) AS `browser_search_adclicks_urlbar_persisted` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_urlbar_searchmode.key, browser_search_adclicks_urlbar_searchmode.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_urlbar_searchmode) AS `browser_search_adclicks_urlbar_searchmode` + ) AS `browser_search_adclicks_urlbar_searchmode` + , + ARRAY( + SELECT + STRUCT( + browser_search_adclicks_webextension.key, browser_search_adclicks_webextension.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_adclicks_webextension) AS `browser_search_adclicks_webextension` + ) AS `browser_search_adclicks_webextension` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_about_home.key, browser_search_content_about_home.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_about_home) AS `browser_search_content_about_home` + ) AS `browser_search_content_about_home` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_about_newtab.key, browser_search_content_about_newtab.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_about_newtab) AS `browser_search_content_about_newtab` + ) AS `browser_search_content_about_newtab` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_contextmenu.key, browser_search_content_contextmenu.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_contextmenu) AS `browser_search_content_contextmenu` + ) AS `browser_search_content_contextmenu` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_reload.key, browser_search_content_reload.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_reload) AS `browser_search_content_reload` + ) AS `browser_search_content_reload` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_searchbar.key, browser_search_content_searchbar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_searchbar) AS `browser_search_content_searchbar` + ) AS `browser_search_content_searchbar` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_system.key, browser_search_content_system.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_system) AS `browser_search_content_system` + ) AS `browser_search_content_system` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_tabhistory.key, browser_search_content_tabhistory.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_tabhistory) AS `browser_search_content_tabhistory` + ) AS `browser_search_content_tabhistory` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_unknown.key, browser_search_content_unknown.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_unknown) AS `browser_search_content_unknown` + ) AS `browser_search_content_unknown` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_urlbar.key, browser_search_content_urlbar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_urlbar) AS `browser_search_content_urlbar` + ) AS `browser_search_content_urlbar` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_urlbar_handoff.key, browser_search_content_urlbar_handoff.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_urlbar_handoff) AS `browser_search_content_urlbar_handoff` + ) AS `browser_search_content_urlbar_handoff` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_urlbar_persisted.key, browser_search_content_urlbar_persisted.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_urlbar_persisted) AS `browser_search_content_urlbar_persisted` + ) AS `browser_search_content_urlbar_persisted` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_urlbar_searchmode.key, browser_search_content_urlbar_searchmode.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_urlbar_searchmode) AS `browser_search_content_urlbar_searchmode` + ) AS `browser_search_content_urlbar_searchmode` + , + ARRAY( + SELECT + STRUCT( + browser_search_content_webextension.key, browser_search_content_webextension.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_content_webextension) AS `browser_search_content_webextension` + ) AS `browser_search_content_webextension` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_about_home.key, browser_search_withads_about_home.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_about_home) AS `browser_search_withads_about_home` + ) AS `browser_search_withads_about_home` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_about_newtab.key, browser_search_withads_about_newtab.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_about_newtab) AS `browser_search_withads_about_newtab` + ) AS `browser_search_withads_about_newtab` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_contextmenu.key, browser_search_withads_contextmenu.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_contextmenu) AS `browser_search_withads_contextmenu` + ) AS `browser_search_withads_contextmenu` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_reload.key, browser_search_withads_reload.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_reload) AS `browser_search_withads_reload` + ) AS `browser_search_withads_reload` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_searchbar.key, browser_search_withads_searchbar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_searchbar) AS `browser_search_withads_searchbar` + ) AS `browser_search_withads_searchbar` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_system.key, browser_search_withads_system.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_system) AS `browser_search_withads_system` + ) AS `browser_search_withads_system` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_tabhistory.key, browser_search_withads_tabhistory.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_tabhistory) AS `browser_search_withads_tabhistory` + ) AS `browser_search_withads_tabhistory` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_unknown.key, browser_search_withads_unknown.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_unknown) AS `browser_search_withads_unknown` + ) AS `browser_search_withads_unknown` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_urlbar.key, browser_search_withads_urlbar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_urlbar) AS `browser_search_withads_urlbar` + ) AS `browser_search_withads_urlbar` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_urlbar_handoff.key, browser_search_withads_urlbar_handoff.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_urlbar_handoff) AS `browser_search_withads_urlbar_handoff` + ) AS `browser_search_withads_urlbar_handoff` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_urlbar_persisted.key, browser_search_withads_urlbar_persisted.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_urlbar_persisted) AS `browser_search_withads_urlbar_persisted` + ) AS `browser_search_withads_urlbar_persisted` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_urlbar_searchmode.key, browser_search_withads_urlbar_searchmode.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_urlbar_searchmode) AS `browser_search_withads_urlbar_searchmode` + ) AS `browser_search_withads_urlbar_searchmode` + , + ARRAY( + SELECT + STRUCT( + browser_search_withads_webextension.key, browser_search_withads_webextension.value + ) + FROM UNNEST(metrics.labeled_counter.browser_search_withads_webextension) AS `browser_search_withads_webextension` + ) AS `browser_search_withads_webextension` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_app_menu.key, browser_ui_interaction_app_menu.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_app_menu) AS `browser_ui_interaction_app_menu` + ) AS `browser_ui_interaction_app_menu` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_bookmarks_bar.key, browser_ui_interaction_bookmarks_bar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_bookmarks_bar) AS `browser_ui_interaction_bookmarks_bar` + ) AS `browser_ui_interaction_bookmarks_bar` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_content_context.key, browser_ui_interaction_content_context.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_content_context) AS `browser_ui_interaction_content_context` + ) AS `browser_ui_interaction_content_context` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_menu_bar.key, browser_ui_interaction_menu_bar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_menu_bar) AS `browser_ui_interaction_menu_bar` + ) AS `browser_ui_interaction_menu_bar` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_nav_bar.key, browser_ui_interaction_nav_bar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_nav_bar) AS `browser_ui_interaction_nav_bar` + ) AS `browser_ui_interaction_nav_bar` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_overflow_menu.key, browser_ui_interaction_overflow_menu.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_overflow_menu) AS `browser_ui_interaction_overflow_menu` + ) AS `browser_ui_interaction_overflow_menu` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_pageaction_panel.key, browser_ui_interaction_pageaction_panel.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_pageaction_panel) AS `browser_ui_interaction_pageaction_panel` + ) AS `browser_ui_interaction_pageaction_panel` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_pageaction_urlbar.key, browser_ui_interaction_pageaction_urlbar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_pageaction_urlbar) AS `browser_ui_interaction_pageaction_urlbar` + ) AS `browser_ui_interaction_pageaction_urlbar` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_pinned_overflow_menu.key, browser_ui_interaction_pinned_overflow_menu.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_pinned_overflow_menu) AS `browser_ui_interaction_pinned_overflow_menu` + ) AS `browser_ui_interaction_pinned_overflow_menu` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_preferences_pane_containers.key, browser_ui_interaction_preferences_pane_containers.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_preferences_pane_containers) AS `browser_ui_interaction_preferences_pane_containers` + ) AS `browser_ui_interaction_preferences_pane_containers` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_preferences_pane_experimental.key, browser_ui_interaction_preferences_pane_experimental.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_preferences_pane_experimental) AS `browser_ui_interaction_preferences_pane_experimental` + ) AS `browser_ui_interaction_preferences_pane_experimental` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_preferences_pane_general.key, browser_ui_interaction_preferences_pane_general.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_preferences_pane_general) AS `browser_ui_interaction_preferences_pane_general` + ) AS `browser_ui_interaction_preferences_pane_general` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_preferences_pane_home.key, browser_ui_interaction_preferences_pane_home.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_preferences_pane_home) AS `browser_ui_interaction_preferences_pane_home` + ) AS `browser_ui_interaction_preferences_pane_home` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_preferences_pane_more_from_mozilla.key, browser_ui_interaction_preferences_pane_more_from_mozilla.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_preferences_pane_more_from_mozilla) AS `browser_ui_interaction_preferences_pane_more_from_mozilla` + ) AS `browser_ui_interaction_preferences_pane_more_from_mozilla` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_preferences_pane_privacy.key, browser_ui_interaction_preferences_pane_privacy.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_preferences_pane_privacy) AS `browser_ui_interaction_preferences_pane_privacy` + ) AS `browser_ui_interaction_preferences_pane_privacy` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_preferences_pane_search.key, browser_ui_interaction_preferences_pane_search.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_preferences_pane_search) AS `browser_ui_interaction_preferences_pane_search` + ) AS `browser_ui_interaction_preferences_pane_search` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_preferences_pane_search_results.key, browser_ui_interaction_preferences_pane_search_results.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_preferences_pane_search_results) AS `browser_ui_interaction_preferences_pane_search_results` + ) AS `browser_ui_interaction_preferences_pane_search_results` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_preferences_pane_sync.key, browser_ui_interaction_preferences_pane_sync.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_preferences_pane_sync) AS `browser_ui_interaction_preferences_pane_sync` + ) AS `browser_ui_interaction_preferences_pane_sync` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_preferences_pane_unknown.key, browser_ui_interaction_preferences_pane_unknown.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_preferences_pane_unknown) AS `browser_ui_interaction_preferences_pane_unknown` + ) AS `browser_ui_interaction_preferences_pane_unknown` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_tabs_bar.key, browser_ui_interaction_tabs_bar.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_tabs_bar) AS `browser_ui_interaction_tabs_bar` + ) AS `browser_ui_interaction_tabs_bar` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_tabs_context.key, browser_ui_interaction_tabs_context.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_tabs_context) AS `browser_ui_interaction_tabs_context` + ) AS `browser_ui_interaction_tabs_context` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_tabs_context_entrypoint.key, browser_ui_interaction_tabs_context_entrypoint.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_tabs_context_entrypoint) AS `browser_ui_interaction_tabs_context_entrypoint` + ) AS `browser_ui_interaction_tabs_context_entrypoint` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_unified_extensions_area.key, browser_ui_interaction_unified_extensions_area.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_unified_extensions_area) AS `browser_ui_interaction_unified_extensions_area` + ) AS `browser_ui_interaction_unified_extensions_area` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_vertical_tabs_container.key, browser_ui_interaction_vertical_tabs_container.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_vertical_tabs_container) AS `browser_ui_interaction_vertical_tabs_container` + ) AS `browser_ui_interaction_vertical_tabs_container` + , + ARRAY( + SELECT + STRUCT( + dom_parentprocess_process_launch_errors.key, dom_parentprocess_process_launch_errors.value + ) + FROM UNNEST(metrics.labeled_counter.dom_parentprocess_process_launch_errors) AS `dom_parentprocess_process_launch_errors` + ) AS `dom_parentprocess_process_launch_errors` + , + ARRAY( + SELECT + STRUCT( + suggest_relevance_outcome.key, suggest_relevance_outcome.value + ) + FROM UNNEST(metrics.labeled_counter.suggest_relevance_outcome) AS `suggest_relevance_outcome` + ) AS `suggest_relevance_outcome` + , + ARRAY( + SELECT + STRUCT( + suggest_relevance_status.key, suggest_relevance_status.value + ) + FROM UNNEST(metrics.labeled_counter.suggest_relevance_status) AS `suggest_relevance_status` + ) AS `suggest_relevance_status` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_bookmarkmenu.key, urlbar_searchmode_bookmarkmenu.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_bookmarkmenu) AS `urlbar_searchmode_bookmarkmenu` + ) AS `urlbar_searchmode_bookmarkmenu` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_handoff.key, urlbar_searchmode_handoff.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_handoff) AS `urlbar_searchmode_handoff` + ) AS `urlbar_searchmode_handoff` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_historymenu.key, urlbar_searchmode_historymenu.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_historymenu) AS `urlbar_searchmode_historymenu` + ) AS `urlbar_searchmode_historymenu` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_keywordoffer.key, urlbar_searchmode_keywordoffer.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_keywordoffer) AS `urlbar_searchmode_keywordoffer` + ) AS `urlbar_searchmode_keywordoffer` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_oneoff.key, urlbar_searchmode_oneoff.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_oneoff) AS `urlbar_searchmode_oneoff` + ) AS `urlbar_searchmode_oneoff` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_other.key, urlbar_searchmode_other.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_other) AS `urlbar_searchmode_other` + ) AS `urlbar_searchmode_other` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_searchbutton.key, urlbar_searchmode_searchbutton.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_searchbutton) AS `urlbar_searchmode_searchbutton` + ) AS `urlbar_searchmode_searchbutton` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_shortcut.key, urlbar_searchmode_shortcut.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_shortcut) AS `urlbar_searchmode_shortcut` + ) AS `urlbar_searchmode_shortcut` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_tabmenu.key, urlbar_searchmode_tabmenu.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_tabmenu) AS `urlbar_searchmode_tabmenu` + ) AS `urlbar_searchmode_tabmenu` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_tabtosearch.key, urlbar_searchmode_tabtosearch.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_tabtosearch) AS `urlbar_searchmode_tabtosearch` + ) AS `urlbar_searchmode_tabtosearch` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_tabtosearch_onboard.key, urlbar_searchmode_tabtosearch_onboard.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_tabtosearch_onboard) AS `urlbar_searchmode_tabtosearch_onboard` + ) AS `urlbar_searchmode_tabtosearch_onboard` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_topsites_newtab.key, urlbar_searchmode_topsites_newtab.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_topsites_newtab) AS `urlbar_searchmode_topsites_newtab` + ) AS `urlbar_searchmode_topsites_newtab` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_topsites_urlbar.key, urlbar_searchmode_topsites_urlbar.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_topsites_urlbar) AS `urlbar_searchmode_topsites_urlbar` + ) AS `urlbar_searchmode_topsites_urlbar` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_touchbar.key, urlbar_searchmode_touchbar.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_touchbar) AS `urlbar_searchmode_touchbar` + ) AS `urlbar_searchmode_touchbar` + , + ARRAY( + SELECT + STRUCT( + urlbar_searchmode_typed.key, urlbar_searchmode_typed.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_searchmode_typed) AS `urlbar_searchmode_typed` + ) AS `urlbar_searchmode_typed` + , + ARRAY( + SELECT + STRUCT( + browser_ui_customized_widgets.key, browser_ui_customized_widgets.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_customized_widgets) AS `browser_ui_customized_widgets` + ) AS `browser_ui_customized_widgets` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_all_tabs_panel_entrypoint.key, browser_ui_interaction_all_tabs_panel_entrypoint.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_all_tabs_panel_entrypoint) AS `browser_ui_interaction_all_tabs_panel_entrypoint` + ) AS `browser_ui_interaction_all_tabs_panel_entrypoint` + , + ARRAY( + SELECT + STRUCT( + browser_ui_interaction_keyboard.key, browser_ui_interaction_keyboard.value + ) + FROM UNNEST(metrics.labeled_counter.browser_ui_interaction_keyboard) AS `browser_ui_interaction_keyboard` + ) AS `browser_ui_interaction_keyboard` + , + ARRAY( + SELECT + STRUCT( + networking_http_3_connection_close_reason.key, networking_http_3_connection_close_reason.value + ) + FROM UNNEST(metrics.labeled_counter.networking_http_3_connection_close_reason) AS `networking_http_3_connection_close_reason` + ) AS `networking_http_3_connection_close_reason` + , + ARRAY( + SELECT + STRUCT( + web_push_content_encoding.key, web_push_content_encoding.value + ) + FROM UNNEST(metrics.labeled_counter.web_push_content_encoding) AS `web_push_content_encoding` + ) AS `web_push_content_encoding` + , + ARRAY( + SELECT + STRUCT( + web_push_error_code.key, web_push_error_code.value + ) + FROM UNNEST(metrics.labeled_counter.web_push_error_code) AS `web_push_error_code` + ) AS `web_push_error_code` + , + ARRAY( + SELECT + STRUCT( + browser_engagement_sessionrestore_interstitial.key, browser_engagement_sessionrestore_interstitial.value + ) + FROM UNNEST(metrics.labeled_counter.browser_engagement_sessionrestore_interstitial) AS `browser_engagement_sessionrestore_interstitial` + ) AS `browser_engagement_sessionrestore_interstitial` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_autofill_about.key, urlbar_picked_autofill_about.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_autofill_about) AS `urlbar_picked_autofill_about` + ) AS `urlbar_picked_autofill_about` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_autofill_adaptive.key, urlbar_picked_autofill_adaptive.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_autofill_adaptive) AS `urlbar_picked_autofill_adaptive` + ) AS `urlbar_picked_autofill_adaptive` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_autofill_origin.key, urlbar_picked_autofill_origin.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_autofill_origin) AS `urlbar_picked_autofill_origin` + ) AS `urlbar_picked_autofill_origin` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_autofill_other.key, urlbar_picked_autofill_other.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_autofill_other) AS `urlbar_picked_autofill_other` + ) AS `urlbar_picked_autofill_other` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_autofill_url.key, urlbar_picked_autofill_url.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_autofill_url) AS `urlbar_picked_autofill_url` + ) AS `urlbar_picked_autofill_url` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_bookmark.key, urlbar_picked_bookmark.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_bookmark) AS `urlbar_picked_bookmark` + ) AS `urlbar_picked_bookmark` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_bookmark_adaptive.key, urlbar_picked_bookmark_adaptive.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_bookmark_adaptive) AS `urlbar_picked_bookmark_adaptive` + ) AS `urlbar_picked_bookmark_adaptive` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_clipboard.key, urlbar_picked_clipboard.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_clipboard) AS `urlbar_picked_clipboard` + ) AS `urlbar_picked_clipboard` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_dynamic.key, urlbar_picked_dynamic.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_dynamic) AS `urlbar_picked_dynamic` + ) AS `urlbar_picked_dynamic` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_dynamic_wikipedia.key, urlbar_picked_dynamic_wikipedia.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_dynamic_wikipedia) AS `urlbar_picked_dynamic_wikipedia` + ) AS `urlbar_picked_dynamic_wikipedia` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_extension.key, urlbar_picked_extension.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_extension) AS `urlbar_picked_extension` + ) AS `urlbar_picked_extension` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_formhistory.key, urlbar_picked_formhistory.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_formhistory) AS `urlbar_picked_formhistory` + ) AS `urlbar_picked_formhistory` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_history.key, urlbar_picked_history.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_history) AS `urlbar_picked_history` + ) AS `urlbar_picked_history` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_history_adaptive.key, urlbar_picked_history_adaptive.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_history_adaptive) AS `urlbar_picked_history_adaptive` + ) AS `urlbar_picked_history_adaptive` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_keyword.key, urlbar_picked_keyword.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_keyword) AS `urlbar_picked_keyword` + ) AS `urlbar_picked_keyword` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_navigational.key, urlbar_picked_navigational.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_navigational) AS `urlbar_picked_navigational` + ) AS `urlbar_picked_navigational` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_quickaction.key, urlbar_picked_quickaction.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_quickaction) AS `urlbar_picked_quickaction` + ) AS `urlbar_picked_quickaction` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_quicksuggest.key, urlbar_picked_quicksuggest.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_quicksuggest) AS `urlbar_picked_quicksuggest` + ) AS `urlbar_picked_quicksuggest` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_recent_search.key, urlbar_picked_recent_search.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_recent_search) AS `urlbar_picked_recent_search` + ) AS `urlbar_picked_recent_search` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_remotetab.key, urlbar_picked_remotetab.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_remotetab) AS `urlbar_picked_remotetab` + ) AS `urlbar_picked_remotetab` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_restrict_keyword_actions.key, urlbar_picked_restrict_keyword_actions.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_restrict_keyword_actions) AS `urlbar_picked_restrict_keyword_actions` + ) AS `urlbar_picked_restrict_keyword_actions` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_restrict_keyword_bookmarks.key, urlbar_picked_restrict_keyword_bookmarks.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_restrict_keyword_bookmarks) AS `urlbar_picked_restrict_keyword_bookmarks` + ) AS `urlbar_picked_restrict_keyword_bookmarks` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_restrict_keyword_history.key, urlbar_picked_restrict_keyword_history.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_restrict_keyword_history) AS `urlbar_picked_restrict_keyword_history` + ) AS `urlbar_picked_restrict_keyword_history` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_restrict_keyword_tabs.key, urlbar_picked_restrict_keyword_tabs.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_restrict_keyword_tabs) AS `urlbar_picked_restrict_keyword_tabs` + ) AS `urlbar_picked_restrict_keyword_tabs` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchengine.key, urlbar_picked_searchengine.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchengine) AS `urlbar_picked_searchengine` + ) AS `urlbar_picked_searchengine` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_bookmarkmenu.key, urlbar_picked_searchmode_bookmarkmenu.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_bookmarkmenu) AS `urlbar_picked_searchmode_bookmarkmenu` + ) AS `urlbar_picked_searchmode_bookmarkmenu` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_handoff.key, urlbar_picked_searchmode_handoff.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_handoff) AS `urlbar_picked_searchmode_handoff` + ) AS `urlbar_picked_searchmode_handoff` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_historymenu.key, urlbar_picked_searchmode_historymenu.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_historymenu) AS `urlbar_picked_searchmode_historymenu` + ) AS `urlbar_picked_searchmode_historymenu` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_keywordoffer.key, urlbar_picked_searchmode_keywordoffer.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_keywordoffer) AS `urlbar_picked_searchmode_keywordoffer` + ) AS `urlbar_picked_searchmode_keywordoffer` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_oneoff.key, urlbar_picked_searchmode_oneoff.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_oneoff) AS `urlbar_picked_searchmode_oneoff` + ) AS `urlbar_picked_searchmode_oneoff` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_other.key, urlbar_picked_searchmode_other.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_other) AS `urlbar_picked_searchmode_other` + ) AS `urlbar_picked_searchmode_other` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_searchbutton.key, urlbar_picked_searchmode_searchbutton.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_searchbutton) AS `urlbar_picked_searchmode_searchbutton` + ) AS `urlbar_picked_searchmode_searchbutton` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_shortcut.key, urlbar_picked_searchmode_shortcut.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_shortcut) AS `urlbar_picked_searchmode_shortcut` + ) AS `urlbar_picked_searchmode_shortcut` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_tabmenu.key, urlbar_picked_searchmode_tabmenu.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_tabmenu) AS `urlbar_picked_searchmode_tabmenu` + ) AS `urlbar_picked_searchmode_tabmenu` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_tabtosearch.key, urlbar_picked_searchmode_tabtosearch.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_tabtosearch) AS `urlbar_picked_searchmode_tabtosearch` + ) AS `urlbar_picked_searchmode_tabtosearch` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_tabtosearch_onboard.key, urlbar_picked_searchmode_tabtosearch_onboard.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_tabtosearch_onboard) AS `urlbar_picked_searchmode_tabtosearch_onboard` + ) AS `urlbar_picked_searchmode_tabtosearch_onboard` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_topsites_newtab.key, urlbar_picked_searchmode_topsites_newtab.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_topsites_newtab) AS `urlbar_picked_searchmode_topsites_newtab` + ) AS `urlbar_picked_searchmode_topsites_newtab` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_topsites_urlbar.key, urlbar_picked_searchmode_topsites_urlbar.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_topsites_urlbar) AS `urlbar_picked_searchmode_topsites_urlbar` + ) AS `urlbar_picked_searchmode_topsites_urlbar` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_touchbar.key, urlbar_picked_searchmode_touchbar.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_touchbar) AS `urlbar_picked_searchmode_touchbar` + ) AS `urlbar_picked_searchmode_touchbar` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchmode_typed.key, urlbar_picked_searchmode_typed.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchmode_typed) AS `urlbar_picked_searchmode_typed` + ) AS `urlbar_picked_searchmode_typed` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchsuggestion.key, urlbar_picked_searchsuggestion.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchsuggestion) AS `urlbar_picked_searchsuggestion` + ) AS `urlbar_picked_searchsuggestion` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_searchsuggestion_rich.key, urlbar_picked_searchsuggestion_rich.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_searchsuggestion_rich) AS `urlbar_picked_searchsuggestion_rich` + ) AS `urlbar_picked_searchsuggestion_rich` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_switchtab.key, urlbar_picked_switchtab.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_switchtab) AS `urlbar_picked_switchtab` + ) AS `urlbar_picked_switchtab` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_tabtosearch.key, urlbar_picked_tabtosearch.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_tabtosearch) AS `urlbar_picked_tabtosearch` + ) AS `urlbar_picked_tabtosearch` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_tip.key, urlbar_picked_tip.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_tip) AS `urlbar_picked_tip` + ) AS `urlbar_picked_tip` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_topsite.key, urlbar_picked_topsite.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_topsite) AS `urlbar_picked_topsite` + ) AS `urlbar_picked_topsite` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_trending.key, urlbar_picked_trending.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_trending) AS `urlbar_picked_trending` + ) AS `urlbar_picked_trending` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_trending_rich.key, urlbar_picked_trending_rich.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_trending_rich) AS `urlbar_picked_trending_rich` + ) AS `urlbar_picked_trending_rich` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_unknown.key, urlbar_picked_unknown.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_unknown) AS `urlbar_picked_unknown` + ) AS `urlbar_picked_unknown` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_visiturl.key, urlbar_picked_visiturl.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_visiturl) AS `urlbar_picked_visiturl` + ) AS `urlbar_picked_visiturl` + , + ARRAY( + SELECT + STRUCT( + urlbar_picked_weather.key, urlbar_picked_weather.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_picked_weather) AS `urlbar_picked_weather` + ) AS `urlbar_picked_weather` + , + ARRAY( + SELECT + STRUCT( + urlbar_tabtosearch_impressions.key, urlbar_tabtosearch_impressions.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_tabtosearch_impressions) AS `urlbar_tabtosearch_impressions` + ) AS `urlbar_tabtosearch_impressions` + , + ARRAY( + SELECT + STRUCT( + urlbar_tabtosearch_impressions_onboarding.key, urlbar_tabtosearch_impressions_onboarding.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_tabtosearch_impressions_onboarding) AS `urlbar_tabtosearch_impressions_onboarding` + ) AS `urlbar_tabtosearch_impressions_onboarding` + , + ARRAY( + SELECT + STRUCT( + urlbar_tips.key, urlbar_tips.value + ) + FROM UNNEST(metrics.labeled_counter.urlbar_tips) AS `urlbar_tips` + ) AS `urlbar_tips` + , + ARRAY( + SELECT + STRUCT( + network_cache_hit_miss_stat_per_cache_size.key, network_cache_hit_miss_stat_per_cache_size.value + ) + FROM UNNEST(metrics.labeled_counter.network_cache_hit_miss_stat_per_cache_size) AS `network_cache_hit_miss_stat_per_cache_size` + ) AS `network_cache_hit_miss_stat_per_cache_size` + + ) AS `labeled_counter` + , + STRUCT( + + STRUCT( + metrics.memory_distribution.glean_upload_discarded_exceeding_pings_size.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.glean_upload_discarded_exceeding_pings_size.values) AS `values` + ) AS `values` + , metrics.memory_distribution.glean_upload_discarded_exceeding_pings_size.count + ) AS `glean_upload_discarded_exceeding_pings_size` + , + STRUCT( + metrics.memory_distribution.glean_upload_pending_pings_directory_size.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.glean_upload_pending_pings_directory_size.values) AS `values` + ) AS `values` + , metrics.memory_distribution.glean_upload_pending_pings_directory_size.count + ) AS `glean_upload_pending_pings_directory_size` + , + STRUCT( + metrics.memory_distribution.glean_database_size.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.glean_database_size.values) AS `values` + ) AS `values` + , metrics.memory_distribution.glean_database_size.count + ) AS `glean_database_size` + , + STRUCT( + metrics.memory_distribution.fog_ipc_buffer_sizes.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.fog_ipc_buffer_sizes.values) AS `values` + ) AS `values` + , metrics.memory_distribution.fog_ipc_buffer_sizes.count + ) AS `fog_ipc_buffer_sizes` + , + STRUCT( + metrics.memory_distribution.extensions_apis_dnr_startup_cache_read_size.count, metrics.memory_distribution.extensions_apis_dnr_startup_cache_read_size.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.extensions_apis_dnr_startup_cache_read_size.values) AS `values` + ) AS `values` + + ) AS `extensions_apis_dnr_startup_cache_read_size` + , + STRUCT( + metrics.memory_distribution.extensions_apis_dnr_startup_cache_write_size.count, metrics.memory_distribution.extensions_apis_dnr_startup_cache_write_size.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.extensions_apis_dnr_startup_cache_write_size.values) AS `values` + ) AS `values` + + ) AS `extensions_apis_dnr_startup_cache_write_size` + , + STRUCT( + metrics.memory_distribution.performance_clone_deserialize_size.count, metrics.memory_distribution.performance_clone_deserialize_size.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.performance_clone_deserialize_size.values) AS `values` + ) AS `values` + + ) AS `performance_clone_deserialize_size` + , + STRUCT( + metrics.memory_distribution.browser_backup_total_backup_size.count, metrics.memory_distribution.browser_backup_total_backup_size.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.browser_backup_total_backup_size.values) AS `values` + ) AS `values` + + ) AS `browser_backup_total_backup_size` + , + STRUCT( + metrics.memory_distribution.browser_backup_compressed_archive_size.count, metrics.memory_distribution.browser_backup_compressed_archive_size.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.browser_backup_compressed_archive_size.values) AS `values` + ) AS `values` + + ) AS `browser_backup_compressed_archive_size` + , + STRUCT( + metrics.memory_distribution.networking_cache_metadata_size.count, metrics.memory_distribution.networking_cache_metadata_size.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.networking_cache_metadata_size.values) AS `values` + ) AS `values` + + ) AS `networking_cache_metadata_size` + , + STRUCT( + metrics.memory_distribution.cert_storage_memory.count, metrics.memory_distribution.cert_storage_memory.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.cert_storage_memory.values) AS `values` + ) AS `values` + + ) AS `cert_storage_memory` + , + STRUCT( + metrics.memory_distribution.networking_http_3_udp_datagram_segment_size_received.count, metrics.memory_distribution.networking_http_3_udp_datagram_segment_size_received.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.networking_http_3_udp_datagram_segment_size_received.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_udp_datagram_segment_size_received` + , + STRUCT( + metrics.memory_distribution.networking_http_3_udp_datagram_segment_size_sent.count, metrics.memory_distribution.networking_http_3_udp_datagram_segment_size_sent.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.networking_http_3_udp_datagram_segment_size_sent.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_udp_datagram_segment_size_sent` + , + STRUCT( + metrics.memory_distribution.networking_http_3_udp_datagram_size_received.count, metrics.memory_distribution.networking_http_3_udp_datagram_size_received.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.memory_distribution.networking_http_3_udp_datagram_size_received.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_udp_datagram_size_received` + + ) AS `memory_distribution` + , + STRUCT( + metrics.string.ping_reason, metrics.string.geckoview_validation_build_id, metrics.string.geckoview_validation_version, metrics.string.search_engine_default_display_name, metrics.string.search_engine_default_engine_id, metrics.string.search_engine_default_load_path, metrics.string.search_engine_default_verified, metrics.string.search_engine_private_display_name, metrics.string.search_engine_private_engine_id, metrics.string.search_engine_private_load_path, metrics.string.search_engine_private_verified, metrics.string.blocklist_mlbf_source, metrics.string.extensions_quarantined_domains_listhash, metrics.string.extensions_quarantined_domains_remotehash, metrics.string.glean_client_annotation_experimentation_id, metrics.string.glean_database_rkv_load_error, metrics.string.gpu_process_feature_status, metrics.string.gfx_adapter_primary_description, metrics.string.gfx_adapter_primary_device_id, metrics.string.gfx_adapter_primary_driver_date, metrics.string.gfx_adapter_primary_driver_files, metrics.string.gfx_adapter_primary_driver_vendor, metrics.string.gfx_adapter_primary_driver_version, metrics.string.gfx_adapter_primary_subsystem_id, metrics.string.gfx_adapter_primary_vendor_id, metrics.string.gfx_feature_webrender, metrics.string.gfx_status_compositor, metrics.string.gfx_status_last_compositor_gecko_version, metrics.string.gecko_build_id, metrics.string.gecko_version, metrics.string.installation_first_seen_failure_reason, metrics.string.installation_first_seen_installer_type, metrics.string.installation_first_seen_version, metrics.string.genai_chatbot_provider, metrics.string.sidebar_display_settings, metrics.string.sidebar_position_settings, metrics.string.sidebar_tabs_layout, metrics.string.blocklist_mlbf_softblocks_source, metrics.string.a11y_instantiators, metrics.string.gfx_linux_window_protocol, metrics.string.os_environment_allowed_app_sources, metrics.string.os_environment_launch_method, metrics.string.startup_profile_database_version, metrics.string.startup_profile_selection_reason, metrics.string.widget_gtk_version + ) AS `string` + , + STRUCT( + + STRUCT( + metrics.timespan.fog_initialization.time_unit, metrics.timespan.fog_initialization.value + ) AS `fog_initialization` + , + STRUCT( + metrics.timespan.extensions_startup_cache_load_time.time_unit, metrics.timespan.extensions_startup_cache_load_time.value + ) AS `extensions_startup_cache_load_time` + , + STRUCT( + metrics.timespan.migration_time_to_produce_migrator_list.time_unit, metrics.timespan.migration_time_to_produce_migrator_list.value + ) AS `migration_time_to_produce_migrator_list` + , + STRUCT( + metrics.timespan.networking_loading_certs_task.time_unit, metrics.timespan.networking_loading_certs_task.value + ) AS `networking_loading_certs_task` + , + STRUCT( + metrics.timespan.networking_nss_initialization.time_unit, metrics.timespan.networking_nss_initialization.value + ) AS `networking_nss_initialization` + + ) AS `timespan` + , + STRUCT( + metrics.datetime.glean_validation_first_run_hour, metrics.datetime.background_update_time_last_update_scheduled, metrics.datetime.blocklist_last_modified_rs_addons_mblf, metrics.datetime.blocklist_mlbf_generation_time, metrics.datetime.blocklist_mlbf_stash_time_newest, metrics.datetime.blocklist_mlbf_stash_time_oldest, metrics.datetime.blocklist_mlbf_softblocks_generation_time + ) AS `datetime` + , + STRUCT( + + STRUCT( + metrics.timing_distribution.fog_ipc_flush_durations.bucket_count, metrics.timing_distribution.fog_ipc_flush_durations.histogram_type, metrics.timing_distribution.fog_ipc_flush_durations.overflow, metrics.timing_distribution.fog_ipc_flush_durations.range, metrics.timing_distribution.fog_ipc_flush_durations.sum, metrics.timing_distribution.fog_ipc_flush_durations.time_unit, metrics.timing_distribution.fog_ipc_flush_durations.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.fog_ipc_flush_durations.values) AS `values` + ) AS `values` + , metrics.timing_distribution.fog_ipc_flush_durations.count + ) AS `fog_ipc_flush_durations` + , + STRUCT( + metrics.timing_distribution.paint_build_displaylist_time.bucket_count, metrics.timing_distribution.paint_build_displaylist_time.histogram_type, metrics.timing_distribution.paint_build_displaylist_time.overflow, metrics.timing_distribution.paint_build_displaylist_time.range, metrics.timing_distribution.paint_build_displaylist_time.sum, metrics.timing_distribution.paint_build_displaylist_time.time_unit, metrics.timing_distribution.paint_build_displaylist_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.paint_build_displaylist_time.values) AS `values` + ) AS `values` + , metrics.timing_distribution.paint_build_displaylist_time.count + ) AS `paint_build_displaylist_time` + , + STRUCT( + metrics.timing_distribution.wr_rasterize_glyphs_time.bucket_count, metrics.timing_distribution.wr_rasterize_glyphs_time.histogram_type, metrics.timing_distribution.wr_rasterize_glyphs_time.overflow, metrics.timing_distribution.wr_rasterize_glyphs_time.range, metrics.timing_distribution.wr_rasterize_glyphs_time.sum, metrics.timing_distribution.wr_rasterize_glyphs_time.time_unit, metrics.timing_distribution.wr_rasterize_glyphs_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.wr_rasterize_glyphs_time.values) AS `values` + ) AS `values` + , metrics.timing_distribution.wr_rasterize_glyphs_time.count + ) AS `wr_rasterize_glyphs_time` + , + STRUCT( + metrics.timing_distribution.wr_framebuild_time.bucket_count, metrics.timing_distribution.wr_framebuild_time.histogram_type, metrics.timing_distribution.wr_framebuild_time.overflow, metrics.timing_distribution.wr_framebuild_time.range, metrics.timing_distribution.wr_framebuild_time.sum, metrics.timing_distribution.wr_framebuild_time.time_unit, metrics.timing_distribution.wr_framebuild_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.wr_framebuild_time.values) AS `values` + ) AS `values` + , metrics.timing_distribution.wr_framebuild_time.count + ) AS `wr_framebuild_time` + , + STRUCT( + metrics.timing_distribution.wr_scenebuild_time.bucket_count, metrics.timing_distribution.wr_scenebuild_time.histogram_type, metrics.timing_distribution.wr_scenebuild_time.overflow, metrics.timing_distribution.wr_scenebuild_time.range, metrics.timing_distribution.wr_scenebuild_time.sum, metrics.timing_distribution.wr_scenebuild_time.time_unit, metrics.timing_distribution.wr_scenebuild_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.wr_scenebuild_time.values) AS `values` + ) AS `values` + , metrics.timing_distribution.wr_scenebuild_time.count + ) AS `wr_scenebuild_time` + , + STRUCT( + metrics.timing_distribution.wr_sceneswap_time.bucket_count, metrics.timing_distribution.wr_sceneswap_time.histogram_type, metrics.timing_distribution.wr_sceneswap_time.overflow, metrics.timing_distribution.wr_sceneswap_time.range, metrics.timing_distribution.wr_sceneswap_time.sum, metrics.timing_distribution.wr_sceneswap_time.time_unit, metrics.timing_distribution.wr_sceneswap_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.wr_sceneswap_time.values) AS `values` + ) AS `values` + , metrics.timing_distribution.wr_sceneswap_time.count + ) AS `wr_sceneswap_time` + , + STRUCT( + metrics.timing_distribution.wr_rasterize_blobs_time.bucket_count, metrics.timing_distribution.wr_rasterize_blobs_time.histogram_type, metrics.timing_distribution.wr_rasterize_blobs_time.overflow, metrics.timing_distribution.wr_rasterize_blobs_time.range, metrics.timing_distribution.wr_rasterize_blobs_time.sum, metrics.timing_distribution.wr_rasterize_blobs_time.time_unit, metrics.timing_distribution.wr_rasterize_blobs_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.wr_rasterize_blobs_time.values) AS `values` + ) AS `values` + , metrics.timing_distribution.wr_rasterize_blobs_time.count + ) AS `wr_rasterize_blobs_time` + , + STRUCT( + metrics.timing_distribution.wr_gpu_wait_time.bucket_count, metrics.timing_distribution.wr_gpu_wait_time.histogram_type, metrics.timing_distribution.wr_gpu_wait_time.overflow, metrics.timing_distribution.wr_gpu_wait_time.range, metrics.timing_distribution.wr_gpu_wait_time.sum, metrics.timing_distribution.wr_gpu_wait_time.time_unit, metrics.timing_distribution.wr_gpu_wait_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.wr_gpu_wait_time.values) AS `values` + ) AS `values` + , metrics.timing_distribution.wr_gpu_wait_time.count + ) AS `wr_gpu_wait_time` + , + STRUCT( + metrics.timing_distribution.wr_renderer_time.bucket_count, metrics.timing_distribution.wr_renderer_time.histogram_type, metrics.timing_distribution.wr_renderer_time.overflow, metrics.timing_distribution.wr_renderer_time.range, metrics.timing_distribution.wr_renderer_time.sum, metrics.timing_distribution.wr_renderer_time.time_unit, metrics.timing_distribution.wr_renderer_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.wr_renderer_time.values) AS `values` + ) AS `values` + , metrics.timing_distribution.wr_renderer_time.count + ) AS `wr_renderer_time` + , + STRUCT( + metrics.timing_distribution.wr_texture_cache_update_time.bucket_count, metrics.timing_distribution.wr_texture_cache_update_time.histogram_type, metrics.timing_distribution.wr_texture_cache_update_time.overflow, metrics.timing_distribution.wr_texture_cache_update_time.range, metrics.timing_distribution.wr_texture_cache_update_time.sum, metrics.timing_distribution.wr_texture_cache_update_time.time_unit, metrics.timing_distribution.wr_texture_cache_update_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.wr_texture_cache_update_time.values) AS `values` + ) AS `values` + , metrics.timing_distribution.wr_texture_cache_update_time.count + ) AS `wr_texture_cache_update_time` + , + STRUCT( + metrics.timing_distribution.wr_time_to_frame_build.bucket_count, metrics.timing_distribution.wr_time_to_frame_build.histogram_type, metrics.timing_distribution.wr_time_to_frame_build.overflow, metrics.timing_distribution.wr_time_to_frame_build.range, metrics.timing_distribution.wr_time_to_frame_build.sum, metrics.timing_distribution.wr_time_to_frame_build.time_unit, metrics.timing_distribution.wr_time_to_frame_build.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.wr_time_to_frame_build.values) AS `values` + ) AS `values` + , metrics.timing_distribution.wr_time_to_frame_build.count + ) AS `wr_time_to_frame_build` + , + STRUCT( + metrics.timing_distribution.wr_time_to_render_start.bucket_count, metrics.timing_distribution.wr_time_to_render_start.histogram_type, metrics.timing_distribution.wr_time_to_render_start.overflow, metrics.timing_distribution.wr_time_to_render_start.range, metrics.timing_distribution.wr_time_to_render_start.sum, metrics.timing_distribution.wr_time_to_render_start.time_unit, metrics.timing_distribution.wr_time_to_render_start.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.wr_time_to_render_start.values) AS `values` + ) AS `values` + , metrics.timing_distribution.wr_time_to_render_start.count + ) AS `wr_time_to_render_start` + , + STRUCT( + metrics.timing_distribution.wr_renderer_time_no_sc.bucket_count, metrics.timing_distribution.wr_renderer_time_no_sc.histogram_type, metrics.timing_distribution.wr_renderer_time_no_sc.overflow, metrics.timing_distribution.wr_renderer_time_no_sc.range, metrics.timing_distribution.wr_renderer_time_no_sc.sum, metrics.timing_distribution.wr_renderer_time_no_sc.time_unit, metrics.timing_distribution.wr_renderer_time_no_sc.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.wr_renderer_time_no_sc.values) AS `values` + ) AS `values` + , metrics.timing_distribution.wr_renderer_time_no_sc.count + ) AS `wr_renderer_time_no_sc` + , + STRUCT( + metrics.timing_distribution.network_open_to_transaction_pending.bucket_count, metrics.timing_distribution.network_open_to_transaction_pending.histogram_type, metrics.timing_distribution.network_open_to_transaction_pending.overflow, metrics.timing_distribution.network_open_to_transaction_pending.range, metrics.timing_distribution.network_open_to_transaction_pending.sum, metrics.timing_distribution.network_open_to_transaction_pending.time_unit, metrics.timing_distribution.network_open_to_transaction_pending.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_open_to_transaction_pending.values) AS `values` + ) AS `values` + , metrics.timing_distribution.network_open_to_transaction_pending.count + ) AS `network_open_to_transaction_pending` + , + STRUCT( + metrics.timing_distribution.cookie_banners_click_handle_duration.bucket_count, metrics.timing_distribution.cookie_banners_click_handle_duration.count, metrics.timing_distribution.cookie_banners_click_handle_duration.histogram_type, metrics.timing_distribution.cookie_banners_click_handle_duration.overflow, metrics.timing_distribution.cookie_banners_click_handle_duration.range, metrics.timing_distribution.cookie_banners_click_handle_duration.sum, metrics.timing_distribution.cookie_banners_click_handle_duration.time_unit, metrics.timing_distribution.cookie_banners_click_handle_duration.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.cookie_banners_click_handle_duration.values) AS `values` + ) AS `values` + + ) AS `cookie_banners_click_handle_duration` + , + STRUCT( + metrics.timing_distribution.glean_upload_send_failure.bucket_count, metrics.timing_distribution.glean_upload_send_failure.count, metrics.timing_distribution.glean_upload_send_failure.histogram_type, metrics.timing_distribution.glean_upload_send_failure.overflow, metrics.timing_distribution.glean_upload_send_failure.range, metrics.timing_distribution.glean_upload_send_failure.sum, metrics.timing_distribution.glean_upload_send_failure.time_unit, metrics.timing_distribution.glean_upload_send_failure.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.glean_upload_send_failure.values) AS `values` + ) AS `values` + + ) AS `glean_upload_send_failure` + , + STRUCT( + metrics.timing_distribution.glean_upload_send_success.bucket_count, metrics.timing_distribution.glean_upload_send_success.count, metrics.timing_distribution.glean_upload_send_success.histogram_type, metrics.timing_distribution.glean_upload_send_success.overflow, metrics.timing_distribution.glean_upload_send_success.range, metrics.timing_distribution.glean_upload_send_success.sum, metrics.timing_distribution.glean_upload_send_success.time_unit, metrics.timing_distribution.glean_upload_send_success.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.glean_upload_send_success.values) AS `values` + ) AS `values` + + ) AS `glean_upload_send_success` + , + STRUCT( + metrics.timing_distribution.glean_validation_shutdown_wait.bucket_count, metrics.timing_distribution.glean_validation_shutdown_wait.count, metrics.timing_distribution.glean_validation_shutdown_wait.histogram_type, metrics.timing_distribution.glean_validation_shutdown_wait.overflow, metrics.timing_distribution.glean_validation_shutdown_wait.range, metrics.timing_distribution.glean_validation_shutdown_wait.sum, metrics.timing_distribution.glean_validation_shutdown_wait.time_unit, metrics.timing_distribution.glean_validation_shutdown_wait.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.glean_validation_shutdown_wait.values) AS `values` + ) AS `values` + + ) AS `glean_validation_shutdown_wait` + , + STRUCT( + metrics.timing_distribution.extensions_apis_dnr_evaluate_rules_time.bucket_count, metrics.timing_distribution.extensions_apis_dnr_evaluate_rules_time.count, metrics.timing_distribution.extensions_apis_dnr_evaluate_rules_time.histogram_type, metrics.timing_distribution.extensions_apis_dnr_evaluate_rules_time.overflow, metrics.timing_distribution.extensions_apis_dnr_evaluate_rules_time.range, metrics.timing_distribution.extensions_apis_dnr_evaluate_rules_time.sum, metrics.timing_distribution.extensions_apis_dnr_evaluate_rules_time.time_unit, metrics.timing_distribution.extensions_apis_dnr_evaluate_rules_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_apis_dnr_evaluate_rules_time.values) AS `values` + ) AS `values` + + ) AS `extensions_apis_dnr_evaluate_rules_time` + , + STRUCT( + metrics.timing_distribution.extensions_apis_dnr_startup_cache_read_time.bucket_count, metrics.timing_distribution.extensions_apis_dnr_startup_cache_read_time.count, metrics.timing_distribution.extensions_apis_dnr_startup_cache_read_time.histogram_type, metrics.timing_distribution.extensions_apis_dnr_startup_cache_read_time.overflow, metrics.timing_distribution.extensions_apis_dnr_startup_cache_read_time.range, metrics.timing_distribution.extensions_apis_dnr_startup_cache_read_time.sum, metrics.timing_distribution.extensions_apis_dnr_startup_cache_read_time.time_unit, metrics.timing_distribution.extensions_apis_dnr_startup_cache_read_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_apis_dnr_startup_cache_read_time.values) AS `values` + ) AS `values` + + ) AS `extensions_apis_dnr_startup_cache_read_time` + , + STRUCT( + metrics.timing_distribution.extensions_apis_dnr_startup_cache_write_time.bucket_count, metrics.timing_distribution.extensions_apis_dnr_startup_cache_write_time.count, metrics.timing_distribution.extensions_apis_dnr_startup_cache_write_time.histogram_type, metrics.timing_distribution.extensions_apis_dnr_startup_cache_write_time.overflow, metrics.timing_distribution.extensions_apis_dnr_startup_cache_write_time.range, metrics.timing_distribution.extensions_apis_dnr_startup_cache_write_time.sum, metrics.timing_distribution.extensions_apis_dnr_startup_cache_write_time.time_unit, metrics.timing_distribution.extensions_apis_dnr_startup_cache_write_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_apis_dnr_startup_cache_write_time.values) AS `values` + ) AS `values` + + ) AS `extensions_apis_dnr_startup_cache_write_time` + , + STRUCT( + metrics.timing_distribution.extensions_apis_dnr_validate_rules_time.bucket_count, metrics.timing_distribution.extensions_apis_dnr_validate_rules_time.count, metrics.timing_distribution.extensions_apis_dnr_validate_rules_time.histogram_type, metrics.timing_distribution.extensions_apis_dnr_validate_rules_time.overflow, metrics.timing_distribution.extensions_apis_dnr_validate_rules_time.range, metrics.timing_distribution.extensions_apis_dnr_validate_rules_time.sum, metrics.timing_distribution.extensions_apis_dnr_validate_rules_time.time_unit, metrics.timing_distribution.extensions_apis_dnr_validate_rules_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_apis_dnr_validate_rules_time.values) AS `values` + ) AS `values` + + ) AS `extensions_apis_dnr_validate_rules_time` + , + STRUCT( + metrics.timing_distribution.glean_validation_shutdown_dispatcher_wait.bucket_count, metrics.timing_distribution.glean_validation_shutdown_dispatcher_wait.count, metrics.timing_distribution.glean_validation_shutdown_dispatcher_wait.histogram_type, metrics.timing_distribution.glean_validation_shutdown_dispatcher_wait.overflow, metrics.timing_distribution.glean_validation_shutdown_dispatcher_wait.range, metrics.timing_distribution.glean_validation_shutdown_dispatcher_wait.sum, metrics.timing_distribution.glean_validation_shutdown_dispatcher_wait.time_unit, metrics.timing_distribution.glean_validation_shutdown_dispatcher_wait.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.glean_validation_shutdown_dispatcher_wait.values) AS `values` + ) AS `values` + + ) AS `glean_validation_shutdown_dispatcher_wait` + , + STRUCT( + metrics.timing_distribution.serp_categorization_duration.bucket_count, metrics.timing_distribution.serp_categorization_duration.count, metrics.timing_distribution.serp_categorization_duration.histogram_type, metrics.timing_distribution.serp_categorization_duration.overflow, metrics.timing_distribution.serp_categorization_duration.range, metrics.timing_distribution.serp_categorization_duration.sum, metrics.timing_distribution.serp_categorization_duration.time_unit, metrics.timing_distribution.serp_categorization_duration.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.serp_categorization_duration.values) AS `values` + ) AS `values` + + ) AS `serp_categorization_duration` + , + STRUCT( + metrics.timing_distribution.search_service_startup_time.bucket_count, metrics.timing_distribution.search_service_startup_time.count, metrics.timing_distribution.search_service_startup_time.histogram_type, metrics.timing_distribution.search_service_startup_time.overflow, metrics.timing_distribution.search_service_startup_time.range, metrics.timing_distribution.search_service_startup_time.sum, metrics.timing_distribution.search_service_startup_time.time_unit, metrics.timing_distribution.search_service_startup_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.search_service_startup_time.values) AS `values` + ) AS `values` + + ) AS `search_service_startup_time` + , + STRUCT( + metrics.timing_distribution.networking_dns_failed_lookup_time.bucket_count, metrics.timing_distribution.networking_dns_failed_lookup_time.count, metrics.timing_distribution.networking_dns_failed_lookup_time.histogram_type, metrics.timing_distribution.networking_dns_failed_lookup_time.overflow, metrics.timing_distribution.networking_dns_failed_lookup_time.range, metrics.timing_distribution.networking_dns_failed_lookup_time.sum, metrics.timing_distribution.networking_dns_failed_lookup_time.time_unit, metrics.timing_distribution.networking_dns_failed_lookup_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_dns_failed_lookup_time.values) AS `values` + ) AS `values` + + ) AS `networking_dns_failed_lookup_time` + , + STRUCT( + metrics.timing_distribution.networking_dns_lookup_time.bucket_count, metrics.timing_distribution.networking_dns_lookup_time.count, metrics.timing_distribution.networking_dns_lookup_time.histogram_type, metrics.timing_distribution.networking_dns_lookup_time.overflow, metrics.timing_distribution.networking_dns_lookup_time.range, metrics.timing_distribution.networking_dns_lookup_time.sum, metrics.timing_distribution.networking_dns_lookup_time.time_unit, metrics.timing_distribution.networking_dns_lookup_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_dns_lookup_time.values) AS `values` + ) AS `values` + + ) AS `networking_dns_lookup_time` + , + STRUCT( + metrics.timing_distribution.networking_dns_renewal_time.bucket_count, metrics.timing_distribution.networking_dns_renewal_time.count, metrics.timing_distribution.networking_dns_renewal_time.histogram_type, metrics.timing_distribution.networking_dns_renewal_time.overflow, metrics.timing_distribution.networking_dns_renewal_time.range, metrics.timing_distribution.networking_dns_renewal_time.sum, metrics.timing_distribution.networking_dns_renewal_time.time_unit, metrics.timing_distribution.networking_dns_renewal_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_dns_renewal_time.values) AS `values` + ) AS `values` + + ) AS `networking_dns_renewal_time` + , + STRUCT( + metrics.timing_distribution.networking_dns_renewal_time_for_ttl.bucket_count, metrics.timing_distribution.networking_dns_renewal_time_for_ttl.count, metrics.timing_distribution.networking_dns_renewal_time_for_ttl.histogram_type, metrics.timing_distribution.networking_dns_renewal_time_for_ttl.overflow, metrics.timing_distribution.networking_dns_renewal_time_for_ttl.range, metrics.timing_distribution.networking_dns_renewal_time_for_ttl.sum, metrics.timing_distribution.networking_dns_renewal_time_for_ttl.time_unit, metrics.timing_distribution.networking_dns_renewal_time_for_ttl.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_dns_renewal_time_for_ttl.values) AS `values` + ) AS `values` + + ) AS `networking_dns_renewal_time_for_ttl` + , + STRUCT( + metrics.timing_distribution.fingerprinting_protection_canvas_noise_calculate_time.bucket_count, metrics.timing_distribution.fingerprinting_protection_canvas_noise_calculate_time.count, metrics.timing_distribution.fingerprinting_protection_canvas_noise_calculate_time.histogram_type, metrics.timing_distribution.fingerprinting_protection_canvas_noise_calculate_time.overflow, metrics.timing_distribution.fingerprinting_protection_canvas_noise_calculate_time.range, metrics.timing_distribution.fingerprinting_protection_canvas_noise_calculate_time.sum, metrics.timing_distribution.fingerprinting_protection_canvas_noise_calculate_time.time_unit, metrics.timing_distribution.fingerprinting_protection_canvas_noise_calculate_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.fingerprinting_protection_canvas_noise_calculate_time.values) AS `values` + ) AS `values` + + ) AS `fingerprinting_protection_canvas_noise_calculate_time` + , + STRUCT( + metrics.timing_distribution.networking_http_content_onstart_delay.bucket_count, metrics.timing_distribution.networking_http_content_onstart_delay.count, metrics.timing_distribution.networking_http_content_onstart_delay.histogram_type, metrics.timing_distribution.networking_http_content_onstart_delay.overflow, metrics.timing_distribution.networking_http_content_onstart_delay.range, metrics.timing_distribution.networking_http_content_onstart_delay.sum, metrics.timing_distribution.networking_http_content_onstart_delay.time_unit, metrics.timing_distribution.networking_http_content_onstart_delay.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_content_onstart_delay.values) AS `values` + ) AS `values` + + ) AS `networking_http_content_onstart_delay` + , + STRUCT( + metrics.timing_distribution.networking_http_content_onstop_delay.bucket_count, metrics.timing_distribution.networking_http_content_onstop_delay.count, metrics.timing_distribution.networking_http_content_onstop_delay.histogram_type, metrics.timing_distribution.networking_http_content_onstop_delay.overflow, metrics.timing_distribution.networking_http_content_onstop_delay.range, metrics.timing_distribution.networking_http_content_onstop_delay.sum, metrics.timing_distribution.networking_http_content_onstop_delay.time_unit, metrics.timing_distribution.networking_http_content_onstop_delay.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_content_onstop_delay.values) AS `values` + ) AS `values` + + ) AS `networking_http_content_onstop_delay` + , + STRUCT( + metrics.timing_distribution.fog_validation_gvsv_composite_time.bucket_count, metrics.timing_distribution.fog_validation_gvsv_composite_time.count, metrics.timing_distribution.fog_validation_gvsv_composite_time.histogram_type, metrics.timing_distribution.fog_validation_gvsv_composite_time.overflow, metrics.timing_distribution.fog_validation_gvsv_composite_time.range, metrics.timing_distribution.fog_validation_gvsv_composite_time.sum, metrics.timing_distribution.fog_validation_gvsv_composite_time.time_unit, metrics.timing_distribution.fog_validation_gvsv_composite_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.fog_validation_gvsv_composite_time.values) AS `values` + ) AS `values` + + ) AS `fog_validation_gvsv_composite_time` + , + STRUCT( + metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay.bucket_count, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay.count, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay.histogram_type, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay.overflow, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay.range, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay.sum, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay.time_unit, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay.values) AS `values` + ) AS `values` + + ) AS `networking_http_content_html5parser_ondatafinished_to_onstop_delay` + , + STRUCT( + metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay_negative.bucket_count, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay_negative.count, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay_negative.histogram_type, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay_negative.overflow, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay_negative.range, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay_negative.sum, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay_negative.time_unit, metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay_negative.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_content_html5parser_ondatafinished_to_onstop_delay_negative.values) AS `values` + ) AS `values` + + ) AS `networking_http_content_html5parser_ondatafinished_to_onstop_delay_negative` + , + STRUCT( + metrics.timing_distribution.networking_http_content_ondatafinished_delay.bucket_count, metrics.timing_distribution.networking_http_content_ondatafinished_delay.count, metrics.timing_distribution.networking_http_content_ondatafinished_delay.histogram_type, metrics.timing_distribution.networking_http_content_ondatafinished_delay.overflow, metrics.timing_distribution.networking_http_content_ondatafinished_delay.range, metrics.timing_distribution.networking_http_content_ondatafinished_delay.sum, metrics.timing_distribution.networking_http_content_ondatafinished_delay.time_unit, metrics.timing_distribution.networking_http_content_ondatafinished_delay.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_content_ondatafinished_delay.values) AS `values` + ) AS `values` + + ) AS `networking_http_content_ondatafinished_delay` + , + STRUCT( + metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay.bucket_count, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay.count, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay.histogram_type, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay.overflow, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay.range, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay.sum, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay.time_unit, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay.values) AS `values` + ) AS `values` + + ) AS `networking_http_content_ondatafinished_to_onstop_delay` + , + STRUCT( + metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay_negative.bucket_count, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay_negative.count, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay_negative.histogram_type, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay_negative.overflow, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay_negative.range, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay_negative.sum, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay_negative.time_unit, metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay_negative.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_content_ondatafinished_to_onstop_delay_negative.values) AS `values` + ) AS `values` + + ) AS `networking_http_content_ondatafinished_to_onstop_delay_negative` + , + STRUCT( + metrics.timing_distribution.perf_largest_contentful_paint.bucket_count, metrics.timing_distribution.perf_largest_contentful_paint.count, metrics.timing_distribution.perf_largest_contentful_paint.histogram_type, metrics.timing_distribution.perf_largest_contentful_paint.overflow, metrics.timing_distribution.perf_largest_contentful_paint.range, metrics.timing_distribution.perf_largest_contentful_paint.sum, metrics.timing_distribution.perf_largest_contentful_paint.time_unit, metrics.timing_distribution.perf_largest_contentful_paint.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.perf_largest_contentful_paint.values) AS `values` + ) AS `values` + + ) AS `perf_largest_contentful_paint` + , + STRUCT( + metrics.timing_distribution.perf_largest_contentful_paint_from_response_start.bucket_count, metrics.timing_distribution.perf_largest_contentful_paint_from_response_start.count, metrics.timing_distribution.perf_largest_contentful_paint_from_response_start.histogram_type, metrics.timing_distribution.perf_largest_contentful_paint_from_response_start.overflow, metrics.timing_distribution.perf_largest_contentful_paint_from_response_start.range, metrics.timing_distribution.perf_largest_contentful_paint_from_response_start.sum, metrics.timing_distribution.perf_largest_contentful_paint_from_response_start.time_unit, metrics.timing_distribution.perf_largest_contentful_paint_from_response_start.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.perf_largest_contentful_paint_from_response_start.values) AS `values` + ) AS `values` + + ) AS `perf_largest_contentful_paint_from_response_start` + , + STRUCT( + metrics.timing_distribution.extensions_timing_background_page_load.bucket_count, metrics.timing_distribution.extensions_timing_background_page_load.count, metrics.timing_distribution.extensions_timing_background_page_load.histogram_type, metrics.timing_distribution.extensions_timing_background_page_load.overflow, metrics.timing_distribution.extensions_timing_background_page_load.range, metrics.timing_distribution.extensions_timing_background_page_load.sum, metrics.timing_distribution.extensions_timing_background_page_load.time_unit, metrics.timing_distribution.extensions_timing_background_page_load.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_timing_background_page_load.values) AS `values` + ) AS `values` + + ) AS `extensions_timing_background_page_load` + , + STRUCT( + metrics.timing_distribution.extensions_timing_browser_action_popup_open.bucket_count, metrics.timing_distribution.extensions_timing_browser_action_popup_open.count, metrics.timing_distribution.extensions_timing_browser_action_popup_open.histogram_type, metrics.timing_distribution.extensions_timing_browser_action_popup_open.overflow, metrics.timing_distribution.extensions_timing_browser_action_popup_open.range, metrics.timing_distribution.extensions_timing_browser_action_popup_open.sum, metrics.timing_distribution.extensions_timing_browser_action_popup_open.time_unit, metrics.timing_distribution.extensions_timing_browser_action_popup_open.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_timing_browser_action_popup_open.values) AS `values` + ) AS `values` + + ) AS `extensions_timing_browser_action_popup_open` + , + STRUCT( + metrics.timing_distribution.extensions_timing_content_script_injection.bucket_count, metrics.timing_distribution.extensions_timing_content_script_injection.count, metrics.timing_distribution.extensions_timing_content_script_injection.histogram_type, metrics.timing_distribution.extensions_timing_content_script_injection.overflow, metrics.timing_distribution.extensions_timing_content_script_injection.range, metrics.timing_distribution.extensions_timing_content_script_injection.sum, metrics.timing_distribution.extensions_timing_content_script_injection.time_unit, metrics.timing_distribution.extensions_timing_content_script_injection.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_timing_content_script_injection.values) AS `values` + ) AS `values` + + ) AS `extensions_timing_content_script_injection` + , + STRUCT( + metrics.timing_distribution.extensions_timing_extension_startup.bucket_count, metrics.timing_distribution.extensions_timing_extension_startup.count, metrics.timing_distribution.extensions_timing_extension_startup.histogram_type, metrics.timing_distribution.extensions_timing_extension_startup.overflow, metrics.timing_distribution.extensions_timing_extension_startup.range, metrics.timing_distribution.extensions_timing_extension_startup.sum, metrics.timing_distribution.extensions_timing_extension_startup.time_unit, metrics.timing_distribution.extensions_timing_extension_startup.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_timing_extension_startup.values) AS `values` + ) AS `values` + + ) AS `extensions_timing_extension_startup` + , + STRUCT( + metrics.timing_distribution.extensions_timing_page_action_popup_open.bucket_count, metrics.timing_distribution.extensions_timing_page_action_popup_open.count, metrics.timing_distribution.extensions_timing_page_action_popup_open.histogram_type, metrics.timing_distribution.extensions_timing_page_action_popup_open.overflow, metrics.timing_distribution.extensions_timing_page_action_popup_open.range, metrics.timing_distribution.extensions_timing_page_action_popup_open.sum, metrics.timing_distribution.extensions_timing_page_action_popup_open.time_unit, metrics.timing_distribution.extensions_timing_page_action_popup_open.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_timing_page_action_popup_open.values) AS `values` + ) AS `values` + + ) AS `extensions_timing_page_action_popup_open` + , + STRUCT( + metrics.timing_distribution.extensions_timing_storage_local_get_idb.bucket_count, metrics.timing_distribution.extensions_timing_storage_local_get_idb.count, metrics.timing_distribution.extensions_timing_storage_local_get_idb.histogram_type, metrics.timing_distribution.extensions_timing_storage_local_get_idb.overflow, metrics.timing_distribution.extensions_timing_storage_local_get_idb.range, metrics.timing_distribution.extensions_timing_storage_local_get_idb.sum, metrics.timing_distribution.extensions_timing_storage_local_get_idb.time_unit, metrics.timing_distribution.extensions_timing_storage_local_get_idb.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_timing_storage_local_get_idb.values) AS `values` + ) AS `values` + + ) AS `extensions_timing_storage_local_get_idb` + , + STRUCT( + metrics.timing_distribution.extensions_timing_storage_local_get_json.bucket_count, metrics.timing_distribution.extensions_timing_storage_local_get_json.count, metrics.timing_distribution.extensions_timing_storage_local_get_json.histogram_type, metrics.timing_distribution.extensions_timing_storage_local_get_json.overflow, metrics.timing_distribution.extensions_timing_storage_local_get_json.range, metrics.timing_distribution.extensions_timing_storage_local_get_json.sum, metrics.timing_distribution.extensions_timing_storage_local_get_json.time_unit, metrics.timing_distribution.extensions_timing_storage_local_get_json.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_timing_storage_local_get_json.values) AS `values` + ) AS `values` + + ) AS `extensions_timing_storage_local_get_json` + , + STRUCT( + metrics.timing_distribution.extensions_timing_storage_local_set_idb.bucket_count, metrics.timing_distribution.extensions_timing_storage_local_set_idb.count, metrics.timing_distribution.extensions_timing_storage_local_set_idb.histogram_type, metrics.timing_distribution.extensions_timing_storage_local_set_idb.overflow, metrics.timing_distribution.extensions_timing_storage_local_set_idb.range, metrics.timing_distribution.extensions_timing_storage_local_set_idb.sum, metrics.timing_distribution.extensions_timing_storage_local_set_idb.time_unit, metrics.timing_distribution.extensions_timing_storage_local_set_idb.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_timing_storage_local_set_idb.values) AS `values` + ) AS `values` + + ) AS `extensions_timing_storage_local_set_idb` + , + STRUCT( + metrics.timing_distribution.extensions_timing_storage_local_set_json.bucket_count, metrics.timing_distribution.extensions_timing_storage_local_set_json.count, metrics.timing_distribution.extensions_timing_storage_local_set_json.histogram_type, metrics.timing_distribution.extensions_timing_storage_local_set_json.overflow, metrics.timing_distribution.extensions_timing_storage_local_set_json.range, metrics.timing_distribution.extensions_timing_storage_local_set_json.sum, metrics.timing_distribution.extensions_timing_storage_local_set_json.time_unit, metrics.timing_distribution.extensions_timing_storage_local_set_json.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.extensions_timing_storage_local_set_json.values) AS `values` + ) AS `values` + + ) AS `extensions_timing_storage_local_set_json` + , + STRUCT( + metrics.timing_distribution.cookie_banners_cmp_handle_duration.bucket_count, metrics.timing_distribution.cookie_banners_cmp_handle_duration.count, metrics.timing_distribution.cookie_banners_cmp_handle_duration.histogram_type, metrics.timing_distribution.cookie_banners_cmp_handle_duration.overflow, metrics.timing_distribution.cookie_banners_cmp_handle_duration.range, metrics.timing_distribution.cookie_banners_cmp_handle_duration.sum, metrics.timing_distribution.cookie_banners_cmp_handle_duration.time_unit, metrics.timing_distribution.cookie_banners_cmp_handle_duration.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.cookie_banners_cmp_handle_duration.values) AS `values` + ) AS `values` + + ) AS `cookie_banners_cmp_handle_duration` + , + STRUCT( + metrics.timing_distribution.networking_http_channel_page_open_to_first_sent.bucket_count, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent.count, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent.histogram_type, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent.overflow, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent.range, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent.sum, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent.time_unit, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_channel_page_open_to_first_sent.values) AS `values` + ) AS `values` + + ) AS `networking_http_channel_page_open_to_first_sent` + , + STRUCT( + metrics.timing_distribution.networking_http_channel_page_open_to_first_sent_https_rr.bucket_count, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent_https_rr.count, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent_https_rr.histogram_type, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent_https_rr.overflow, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent_https_rr.range, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent_https_rr.sum, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent_https_rr.time_unit, metrics.timing_distribution.networking_http_channel_page_open_to_first_sent_https_rr.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_channel_page_open_to_first_sent_https_rr.values) AS `values` + ) AS `values` + + ) AS `networking_http_channel_page_open_to_first_sent_https_rr` + , + STRUCT( + metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent.bucket_count, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent.count, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent.histogram_type, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent.overflow, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent.range, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent.sum, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent.time_unit, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent.values) AS `values` + ) AS `values` + + ) AS `networking_http_channel_sub_open_to_first_sent` + , + STRUCT( + metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent_https_rr.bucket_count, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent_https_rr.count, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent_https_rr.histogram_type, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent_https_rr.overflow, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent_https_rr.range, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent_https_rr.sum, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent_https_rr.time_unit, metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent_https_rr.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_channel_sub_open_to_first_sent_https_rr.values) AS `values` + ) AS `values` + + ) AS `networking_http_channel_sub_open_to_first_sent_https_rr` + , + STRUCT( + metrics.timing_distribution.networking_transaction_wait_time.bucket_count, metrics.timing_distribution.networking_transaction_wait_time.count, metrics.timing_distribution.networking_transaction_wait_time.histogram_type, metrics.timing_distribution.networking_transaction_wait_time.overflow, metrics.timing_distribution.networking_transaction_wait_time.range, metrics.timing_distribution.networking_transaction_wait_time.sum, metrics.timing_distribution.networking_transaction_wait_time.time_unit, metrics.timing_distribution.networking_transaction_wait_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_transaction_wait_time.values) AS `values` + ) AS `values` + + ) AS `networking_transaction_wait_time` + , + STRUCT( + metrics.timing_distribution.networking_transaction_wait_time_https_rr.bucket_count, metrics.timing_distribution.networking_transaction_wait_time_https_rr.count, metrics.timing_distribution.networking_transaction_wait_time_https_rr.histogram_type, metrics.timing_distribution.networking_transaction_wait_time_https_rr.overflow, metrics.timing_distribution.networking_transaction_wait_time_https_rr.range, metrics.timing_distribution.networking_transaction_wait_time_https_rr.sum, metrics.timing_distribution.networking_transaction_wait_time_https_rr.time_unit, metrics.timing_distribution.networking_transaction_wait_time_https_rr.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_transaction_wait_time_https_rr.values) AS `values` + ) AS `values` + + ) AS `networking_transaction_wait_time_https_rr` + , + STRUCT( + metrics.timing_distribution.privacy_sanitize_load_time.bucket_count, metrics.timing_distribution.privacy_sanitize_load_time.count, metrics.timing_distribution.privacy_sanitize_load_time.histogram_type, metrics.timing_distribution.privacy_sanitize_load_time.overflow, metrics.timing_distribution.privacy_sanitize_load_time.range, metrics.timing_distribution.privacy_sanitize_load_time.sum, metrics.timing_distribution.privacy_sanitize_load_time.time_unit, metrics.timing_distribution.privacy_sanitize_load_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.privacy_sanitize_load_time.values) AS `values` + ) AS `values` + + ) AS `privacy_sanitize_load_time` + , + STRUCT( + metrics.timing_distribution.gfx_checkerboard_duration.bucket_count, metrics.timing_distribution.gfx_checkerboard_duration.count, metrics.timing_distribution.gfx_checkerboard_duration.histogram_type, metrics.timing_distribution.gfx_checkerboard_duration.overflow, metrics.timing_distribution.gfx_checkerboard_duration.range, metrics.timing_distribution.gfx_checkerboard_duration.sum, metrics.timing_distribution.gfx_checkerboard_duration.time_unit, metrics.timing_distribution.gfx_checkerboard_duration.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.gfx_checkerboard_duration.values) AS `values` + ) AS `values` + + ) AS `gfx_checkerboard_duration` + , + STRUCT( + metrics.timing_distribution.gfx_checkerboard_potential_duration.bucket_count, metrics.timing_distribution.gfx_checkerboard_potential_duration.count, metrics.timing_distribution.gfx_checkerboard_potential_duration.histogram_type, metrics.timing_distribution.gfx_checkerboard_potential_duration.overflow, metrics.timing_distribution.gfx_checkerboard_potential_duration.range, metrics.timing_distribution.gfx_checkerboard_potential_duration.sum, metrics.timing_distribution.gfx_checkerboard_potential_duration.time_unit, metrics.timing_distribution.gfx_checkerboard_potential_duration.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.gfx_checkerboard_potential_duration.values) AS `values` + ) AS `values` + + ) AS `gfx_checkerboard_potential_duration` + , + STRUCT( + metrics.timing_distribution.gfx_composite_time.bucket_count, metrics.timing_distribution.gfx_composite_time.count, metrics.timing_distribution.gfx_composite_time.histogram_type, metrics.timing_distribution.gfx_composite_time.overflow, metrics.timing_distribution.gfx_composite_time.range, metrics.timing_distribution.gfx_composite_time.sum, metrics.timing_distribution.gfx_composite_time.time_unit, metrics.timing_distribution.gfx_composite_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.gfx_composite_time.values) AS `values` + ) AS `values` + + ) AS `gfx_composite_time` + , + STRUCT( + metrics.timing_distribution.gfx_content_full_paint_time.bucket_count, metrics.timing_distribution.gfx_content_full_paint_time.count, metrics.timing_distribution.gfx_content_full_paint_time.histogram_type, metrics.timing_distribution.gfx_content_full_paint_time.overflow, metrics.timing_distribution.gfx_content_full_paint_time.range, metrics.timing_distribution.gfx_content_full_paint_time.sum, metrics.timing_distribution.gfx_content_full_paint_time.time_unit, metrics.timing_distribution.gfx_content_full_paint_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.gfx_content_full_paint_time.values) AS `values` + ) AS `values` + + ) AS `gfx_content_full_paint_time` + , + STRUCT( + metrics.timing_distribution.gfx_content_paint_time.bucket_count, metrics.timing_distribution.gfx_content_paint_time.count, metrics.timing_distribution.gfx_content_paint_time.histogram_type, metrics.timing_distribution.gfx_content_paint_time.overflow, metrics.timing_distribution.gfx_content_paint_time.range, metrics.timing_distribution.gfx_content_paint_time.sum, metrics.timing_distribution.gfx_content_paint_time.time_unit, metrics.timing_distribution.gfx_content_paint_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.gfx_content_paint_time.values) AS `values` + ) AS `values` + + ) AS `gfx_content_paint_time` + , + STRUCT( + metrics.timing_distribution.gfx_scroll_present_latency.bucket_count, metrics.timing_distribution.gfx_scroll_present_latency.count, metrics.timing_distribution.gfx_scroll_present_latency.histogram_type, metrics.timing_distribution.gfx_scroll_present_latency.overflow, metrics.timing_distribution.gfx_scroll_present_latency.range, metrics.timing_distribution.gfx_scroll_present_latency.sum, metrics.timing_distribution.gfx_scroll_present_latency.time_unit, metrics.timing_distribution.gfx_scroll_present_latency.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.gfx_scroll_present_latency.values) AS `values` + ) AS `values` + + ) AS `gfx_scroll_present_latency` + , + STRUCT( + metrics.timing_distribution.network_cache_hit_time.bucket_count, metrics.timing_distribution.network_cache_hit_time.count, metrics.timing_distribution.network_cache_hit_time.histogram_type, metrics.timing_distribution.network_cache_hit_time.overflow, metrics.timing_distribution.network_cache_hit_time.range, metrics.timing_distribution.network_cache_hit_time.sum, metrics.timing_distribution.network_cache_hit_time.time_unit, metrics.timing_distribution.network_cache_hit_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_cache_hit_time.values) AS `values` + ) AS `values` + + ) AS `network_cache_hit_time` + , + STRUCT( + metrics.timing_distribution.network_dns_end.bucket_count, metrics.timing_distribution.network_dns_end.count, metrics.timing_distribution.network_dns_end.histogram_type, metrics.timing_distribution.network_dns_end.overflow, metrics.timing_distribution.network_dns_end.range, metrics.timing_distribution.network_dns_end.sum, metrics.timing_distribution.network_dns_end.time_unit, metrics.timing_distribution.network_dns_end.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_dns_end.values) AS `values` + ) AS `values` + + ) AS `network_dns_end` + , + STRUCT( + metrics.timing_distribution.network_dns_start.bucket_count, metrics.timing_distribution.network_dns_start.count, metrics.timing_distribution.network_dns_start.histogram_type, metrics.timing_distribution.network_dns_start.overflow, metrics.timing_distribution.network_dns_start.range, metrics.timing_distribution.network_dns_start.sum, metrics.timing_distribution.network_dns_start.time_unit, metrics.timing_distribution.network_dns_start.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_dns_start.values) AS `values` + ) AS `values` + + ) AS `network_dns_start` + , + STRUCT( + metrics.timing_distribution.network_first_from_cache.bucket_count, metrics.timing_distribution.network_first_from_cache.count, metrics.timing_distribution.network_first_from_cache.histogram_type, metrics.timing_distribution.network_first_from_cache.overflow, metrics.timing_distribution.network_first_from_cache.range, metrics.timing_distribution.network_first_from_cache.sum, metrics.timing_distribution.network_first_from_cache.time_unit, metrics.timing_distribution.network_first_from_cache.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_first_from_cache.values) AS `values` + ) AS `values` + + ) AS `network_first_from_cache` + , + STRUCT( + metrics.timing_distribution.network_font_download_end.bucket_count, metrics.timing_distribution.network_font_download_end.count, metrics.timing_distribution.network_font_download_end.histogram_type, metrics.timing_distribution.network_font_download_end.overflow, metrics.timing_distribution.network_font_download_end.range, metrics.timing_distribution.network_font_download_end.sum, metrics.timing_distribution.network_font_download_end.time_unit, metrics.timing_distribution.network_font_download_end.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_font_download_end.values) AS `values` + ) AS `values` + + ) AS `network_font_download_end` + , + STRUCT( + metrics.timing_distribution.network_tcp_connection.bucket_count, metrics.timing_distribution.network_tcp_connection.count, metrics.timing_distribution.network_tcp_connection.histogram_type, metrics.timing_distribution.network_tcp_connection.overflow, metrics.timing_distribution.network_tcp_connection.range, metrics.timing_distribution.network_tcp_connection.sum, metrics.timing_distribution.network_tcp_connection.time_unit, metrics.timing_distribution.network_tcp_connection.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_tcp_connection.values) AS `values` + ) AS `values` + + ) AS `network_tcp_connection` + , + STRUCT( + metrics.timing_distribution.network_tls_handshake.bucket_count, metrics.timing_distribution.network_tls_handshake.count, metrics.timing_distribution.network_tls_handshake.histogram_type, metrics.timing_distribution.network_tls_handshake.overflow, metrics.timing_distribution.network_tls_handshake.range, metrics.timing_distribution.network_tls_handshake.sum, metrics.timing_distribution.network_tls_handshake.time_unit, metrics.timing_distribution.network_tls_handshake.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_tls_handshake.values) AS `values` + ) AS `values` + + ) AS `network_tls_handshake` + , + STRUCT( + metrics.timing_distribution.javascript_pageload_baseline_compile_time.bucket_count, metrics.timing_distribution.javascript_pageload_baseline_compile_time.count, metrics.timing_distribution.javascript_pageload_baseline_compile_time.histogram_type, metrics.timing_distribution.javascript_pageload_baseline_compile_time.overflow, metrics.timing_distribution.javascript_pageload_baseline_compile_time.range, metrics.timing_distribution.javascript_pageload_baseline_compile_time.sum, metrics.timing_distribution.javascript_pageload_baseline_compile_time.time_unit, metrics.timing_distribution.javascript_pageload_baseline_compile_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_pageload_baseline_compile_time.values) AS `values` + ) AS `values` + + ) AS `javascript_pageload_baseline_compile_time` + , + STRUCT( + metrics.timing_distribution.javascript_pageload_delazification_time.bucket_count, metrics.timing_distribution.javascript_pageload_delazification_time.count, metrics.timing_distribution.javascript_pageload_delazification_time.histogram_type, metrics.timing_distribution.javascript_pageload_delazification_time.overflow, metrics.timing_distribution.javascript_pageload_delazification_time.range, metrics.timing_distribution.javascript_pageload_delazification_time.sum, metrics.timing_distribution.javascript_pageload_delazification_time.time_unit, metrics.timing_distribution.javascript_pageload_delazification_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_pageload_delazification_time.values) AS `values` + ) AS `values` + + ) AS `javascript_pageload_delazification_time` + , + STRUCT( + metrics.timing_distribution.javascript_pageload_execution_time.bucket_count, metrics.timing_distribution.javascript_pageload_execution_time.count, metrics.timing_distribution.javascript_pageload_execution_time.histogram_type, metrics.timing_distribution.javascript_pageload_execution_time.overflow, metrics.timing_distribution.javascript_pageload_execution_time.range, metrics.timing_distribution.javascript_pageload_execution_time.sum, metrics.timing_distribution.javascript_pageload_execution_time.time_unit, metrics.timing_distribution.javascript_pageload_execution_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_pageload_execution_time.values) AS `values` + ) AS `values` + + ) AS `javascript_pageload_execution_time` + , + STRUCT( + metrics.timing_distribution.javascript_pageload_gc_time.bucket_count, metrics.timing_distribution.javascript_pageload_gc_time.count, metrics.timing_distribution.javascript_pageload_gc_time.histogram_type, metrics.timing_distribution.javascript_pageload_gc_time.overflow, metrics.timing_distribution.javascript_pageload_gc_time.range, metrics.timing_distribution.javascript_pageload_gc_time.sum, metrics.timing_distribution.javascript_pageload_gc_time.time_unit, metrics.timing_distribution.javascript_pageload_gc_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_pageload_gc_time.values) AS `values` + ) AS `values` + + ) AS `javascript_pageload_gc_time` + , + STRUCT( + metrics.timing_distribution.javascript_pageload_parse_time.bucket_count, metrics.timing_distribution.javascript_pageload_parse_time.count, metrics.timing_distribution.javascript_pageload_parse_time.histogram_type, metrics.timing_distribution.javascript_pageload_parse_time.overflow, metrics.timing_distribution.javascript_pageload_parse_time.range, metrics.timing_distribution.javascript_pageload_parse_time.sum, metrics.timing_distribution.javascript_pageload_parse_time.time_unit, metrics.timing_distribution.javascript_pageload_parse_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_pageload_parse_time.values) AS `values` + ) AS `values` + + ) AS `javascript_pageload_parse_time` + , + STRUCT( + metrics.timing_distribution.javascript_pageload_protect_time.bucket_count, metrics.timing_distribution.javascript_pageload_protect_time.count, metrics.timing_distribution.javascript_pageload_protect_time.histogram_type, metrics.timing_distribution.javascript_pageload_protect_time.overflow, metrics.timing_distribution.javascript_pageload_protect_time.range, metrics.timing_distribution.javascript_pageload_protect_time.sum, metrics.timing_distribution.javascript_pageload_protect_time.time_unit, metrics.timing_distribution.javascript_pageload_protect_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_pageload_protect_time.values) AS `values` + ) AS `values` + + ) AS `javascript_pageload_protect_time` + , + STRUCT( + metrics.timing_distribution.javascript_pageload_xdr_encode_time.bucket_count, metrics.timing_distribution.javascript_pageload_xdr_encode_time.count, metrics.timing_distribution.javascript_pageload_xdr_encode_time.histogram_type, metrics.timing_distribution.javascript_pageload_xdr_encode_time.overflow, metrics.timing_distribution.javascript_pageload_xdr_encode_time.range, metrics.timing_distribution.javascript_pageload_xdr_encode_time.sum, metrics.timing_distribution.javascript_pageload_xdr_encode_time.time_unit, metrics.timing_distribution.javascript_pageload_xdr_encode_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_pageload_xdr_encode_time.values) AS `values` + ) AS `values` + + ) AS `javascript_pageload_xdr_encode_time` + , + STRUCT( + metrics.timing_distribution.performance_interaction_keypress_present_latency.bucket_count, metrics.timing_distribution.performance_interaction_keypress_present_latency.count, metrics.timing_distribution.performance_interaction_keypress_present_latency.histogram_type, metrics.timing_distribution.performance_interaction_keypress_present_latency.overflow, metrics.timing_distribution.performance_interaction_keypress_present_latency.range, metrics.timing_distribution.performance_interaction_keypress_present_latency.sum, metrics.timing_distribution.performance_interaction_keypress_present_latency.time_unit, metrics.timing_distribution.performance_interaction_keypress_present_latency.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_interaction_keypress_present_latency.values) AS `values` + ) AS `values` + + ) AS `performance_interaction_keypress_present_latency` + , + STRUCT( + metrics.timing_distribution.performance_interaction_mouseup_click_present_latency.bucket_count, metrics.timing_distribution.performance_interaction_mouseup_click_present_latency.count, metrics.timing_distribution.performance_interaction_mouseup_click_present_latency.histogram_type, metrics.timing_distribution.performance_interaction_mouseup_click_present_latency.overflow, metrics.timing_distribution.performance_interaction_mouseup_click_present_latency.range, metrics.timing_distribution.performance_interaction_mouseup_click_present_latency.sum, metrics.timing_distribution.performance_interaction_mouseup_click_present_latency.time_unit, metrics.timing_distribution.performance_interaction_mouseup_click_present_latency.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_interaction_mouseup_click_present_latency.values) AS `values` + ) AS `values` + + ) AS `performance_interaction_mouseup_click_present_latency` + , + STRUCT( + metrics.timing_distribution.performance_interaction_tab_switch_composite.bucket_count, metrics.timing_distribution.performance_interaction_tab_switch_composite.count, metrics.timing_distribution.performance_interaction_tab_switch_composite.histogram_type, metrics.timing_distribution.performance_interaction_tab_switch_composite.overflow, metrics.timing_distribution.performance_interaction_tab_switch_composite.range, metrics.timing_distribution.performance_interaction_tab_switch_composite.sum, metrics.timing_distribution.performance_interaction_tab_switch_composite.time_unit, metrics.timing_distribution.performance_interaction_tab_switch_composite.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_interaction_tab_switch_composite.values) AS `values` + ) AS `values` + + ) AS `performance_interaction_tab_switch_composite` + , + STRUCT( + metrics.timing_distribution.performance_page_non_blank_paint.bucket_count, metrics.timing_distribution.performance_page_non_blank_paint.count, metrics.timing_distribution.performance_page_non_blank_paint.histogram_type, metrics.timing_distribution.performance_page_non_blank_paint.overflow, metrics.timing_distribution.performance_page_non_blank_paint.range, metrics.timing_distribution.performance_page_non_blank_paint.sum, metrics.timing_distribution.performance_page_non_blank_paint.time_unit, metrics.timing_distribution.performance_page_non_blank_paint.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_page_non_blank_paint.values) AS `values` + ) AS `values` + + ) AS `performance_page_non_blank_paint` + , + STRUCT( + metrics.timing_distribution.performance_pageload_fcp.bucket_count, metrics.timing_distribution.performance_pageload_fcp.count, metrics.timing_distribution.performance_pageload_fcp.histogram_type, metrics.timing_distribution.performance_pageload_fcp.overflow, metrics.timing_distribution.performance_pageload_fcp.range, metrics.timing_distribution.performance_pageload_fcp.sum, metrics.timing_distribution.performance_pageload_fcp.time_unit, metrics.timing_distribution.performance_pageload_fcp.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_fcp.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_fcp` + , + STRUCT( + metrics.timing_distribution.performance_pageload_fcp_responsestart.bucket_count, metrics.timing_distribution.performance_pageload_fcp_responsestart.count, metrics.timing_distribution.performance_pageload_fcp_responsestart.histogram_type, metrics.timing_distribution.performance_pageload_fcp_responsestart.overflow, metrics.timing_distribution.performance_pageload_fcp_responsestart.range, metrics.timing_distribution.performance_pageload_fcp_responsestart.sum, metrics.timing_distribution.performance_pageload_fcp_responsestart.time_unit, metrics.timing_distribution.performance_pageload_fcp_responsestart.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_fcp_responsestart.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_fcp_responsestart` + , + STRUCT( + metrics.timing_distribution.performance_pageload_load_time.bucket_count, metrics.timing_distribution.performance_pageload_load_time.count, metrics.timing_distribution.performance_pageload_load_time.histogram_type, metrics.timing_distribution.performance_pageload_load_time.overflow, metrics.timing_distribution.performance_pageload_load_time.range, metrics.timing_distribution.performance_pageload_load_time.sum, metrics.timing_distribution.performance_pageload_load_time.time_unit, metrics.timing_distribution.performance_pageload_load_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_load_time.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_load_time` + , + STRUCT( + metrics.timing_distribution.performance_pageload_load_time_responsestart.bucket_count, metrics.timing_distribution.performance_pageload_load_time_responsestart.count, metrics.timing_distribution.performance_pageload_load_time_responsestart.histogram_type, metrics.timing_distribution.performance_pageload_load_time_responsestart.overflow, metrics.timing_distribution.performance_pageload_load_time_responsestart.range, metrics.timing_distribution.performance_pageload_load_time_responsestart.sum, metrics.timing_distribution.performance_pageload_load_time_responsestart.time_unit, metrics.timing_distribution.performance_pageload_load_time_responsestart.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_load_time_responsestart.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_load_time_responsestart` + , + STRUCT( + metrics.timing_distribution.performance_time_dom_complete.bucket_count, metrics.timing_distribution.performance_time_dom_complete.count, metrics.timing_distribution.performance_time_dom_complete.histogram_type, metrics.timing_distribution.performance_time_dom_complete.overflow, metrics.timing_distribution.performance_time_dom_complete.range, metrics.timing_distribution.performance_time_dom_complete.sum, metrics.timing_distribution.performance_time_dom_complete.time_unit, metrics.timing_distribution.performance_time_dom_complete.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_time_dom_complete.values) AS `values` + ) AS `values` + + ) AS `performance_time_dom_complete` + , + STRUCT( + metrics.timing_distribution.performance_time_dom_content_loaded_end.bucket_count, metrics.timing_distribution.performance_time_dom_content_loaded_end.count, metrics.timing_distribution.performance_time_dom_content_loaded_end.histogram_type, metrics.timing_distribution.performance_time_dom_content_loaded_end.overflow, metrics.timing_distribution.performance_time_dom_content_loaded_end.range, metrics.timing_distribution.performance_time_dom_content_loaded_end.sum, metrics.timing_distribution.performance_time_dom_content_loaded_end.time_unit, metrics.timing_distribution.performance_time_dom_content_loaded_end.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_time_dom_content_loaded_end.values) AS `values` + ) AS `values` + + ) AS `performance_time_dom_content_loaded_end` + , + STRUCT( + metrics.timing_distribution.performance_time_dom_content_loaded_start.bucket_count, metrics.timing_distribution.performance_time_dom_content_loaded_start.count, metrics.timing_distribution.performance_time_dom_content_loaded_start.histogram_type, metrics.timing_distribution.performance_time_dom_content_loaded_start.overflow, metrics.timing_distribution.performance_time_dom_content_loaded_start.range, metrics.timing_distribution.performance_time_dom_content_loaded_start.sum, metrics.timing_distribution.performance_time_dom_content_loaded_start.time_unit, metrics.timing_distribution.performance_time_dom_content_loaded_start.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_time_dom_content_loaded_start.values) AS `values` + ) AS `values` + + ) AS `performance_time_dom_content_loaded_start` + , + STRUCT( + metrics.timing_distribution.performance_time_dom_interactive.bucket_count, metrics.timing_distribution.performance_time_dom_interactive.count, metrics.timing_distribution.performance_time_dom_interactive.histogram_type, metrics.timing_distribution.performance_time_dom_interactive.overflow, metrics.timing_distribution.performance_time_dom_interactive.range, metrics.timing_distribution.performance_time_dom_interactive.sum, metrics.timing_distribution.performance_time_dom_interactive.time_unit, metrics.timing_distribution.performance_time_dom_interactive.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_time_dom_interactive.values) AS `values` + ) AS `values` + + ) AS `performance_time_dom_interactive` + , + STRUCT( + metrics.timing_distribution.performance_time_load_event_end.bucket_count, metrics.timing_distribution.performance_time_load_event_end.count, metrics.timing_distribution.performance_time_load_event_end.histogram_type, metrics.timing_distribution.performance_time_load_event_end.overflow, metrics.timing_distribution.performance_time_load_event_end.range, metrics.timing_distribution.performance_time_load_event_end.sum, metrics.timing_distribution.performance_time_load_event_end.time_unit, metrics.timing_distribution.performance_time_load_event_end.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_time_load_event_end.values) AS `values` + ) AS `values` + + ) AS `performance_time_load_event_end` + , + STRUCT( + metrics.timing_distribution.performance_time_load_event_start.bucket_count, metrics.timing_distribution.performance_time_load_event_start.count, metrics.timing_distribution.performance_time_load_event_start.histogram_type, metrics.timing_distribution.performance_time_load_event_start.overflow, metrics.timing_distribution.performance_time_load_event_start.range, metrics.timing_distribution.performance_time_load_event_start.sum, metrics.timing_distribution.performance_time_load_event_start.time_unit, metrics.timing_distribution.performance_time_load_event_start.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_time_load_event_start.values) AS `values` + ) AS `values` + + ) AS `performance_time_load_event_start` + , + STRUCT( + metrics.timing_distribution.geckoview_content_process_lifetime.bucket_count, metrics.timing_distribution.geckoview_content_process_lifetime.count, metrics.timing_distribution.geckoview_content_process_lifetime.histogram_type, metrics.timing_distribution.geckoview_content_process_lifetime.overflow, metrics.timing_distribution.geckoview_content_process_lifetime.range, metrics.timing_distribution.geckoview_content_process_lifetime.sum, metrics.timing_distribution.geckoview_content_process_lifetime.time_unit, metrics.timing_distribution.geckoview_content_process_lifetime.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.geckoview_content_process_lifetime.values) AS `values` + ) AS `values` + + ) AS `geckoview_content_process_lifetime` + , + STRUCT( + metrics.timing_distribution.geckoview_page_load_progress_time.bucket_count, metrics.timing_distribution.geckoview_page_load_progress_time.count, metrics.timing_distribution.geckoview_page_load_progress_time.histogram_type, metrics.timing_distribution.geckoview_page_load_progress_time.overflow, metrics.timing_distribution.geckoview_page_load_progress_time.range, metrics.timing_distribution.geckoview_page_load_progress_time.sum, metrics.timing_distribution.geckoview_page_load_progress_time.time_unit, metrics.timing_distribution.geckoview_page_load_progress_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.geckoview_page_load_progress_time.values) AS `values` + ) AS `values` + + ) AS `geckoview_page_load_progress_time` + , + STRUCT( + metrics.timing_distribution.geckoview_page_load_time.bucket_count, metrics.timing_distribution.geckoview_page_load_time.count, metrics.timing_distribution.geckoview_page_load_time.histogram_type, metrics.timing_distribution.geckoview_page_load_time.overflow, metrics.timing_distribution.geckoview_page_load_time.range, metrics.timing_distribution.geckoview_page_load_time.sum, metrics.timing_distribution.geckoview_page_load_time.time_unit, metrics.timing_distribution.geckoview_page_load_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.geckoview_page_load_time.values) AS `values` + ) AS `values` + + ) AS `geckoview_page_load_time` + , + STRUCT( + metrics.timing_distribution.geckoview_page_reload_time.bucket_count, metrics.timing_distribution.geckoview_page_reload_time.count, metrics.timing_distribution.geckoview_page_reload_time.histogram_type, metrics.timing_distribution.geckoview_page_reload_time.overflow, metrics.timing_distribution.geckoview_page_reload_time.range, metrics.timing_distribution.geckoview_page_reload_time.sum, metrics.timing_distribution.geckoview_page_reload_time.time_unit, metrics.timing_distribution.geckoview_page_reload_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.geckoview_page_reload_time.values) AS `values` + ) AS `values` + + ) AS `geckoview_page_reload_time` + , + STRUCT( + metrics.timing_distribution.geckoview_startup_runtime.bucket_count, metrics.timing_distribution.geckoview_startup_runtime.count, metrics.timing_distribution.geckoview_startup_runtime.histogram_type, metrics.timing_distribution.geckoview_startup_runtime.overflow, metrics.timing_distribution.geckoview_startup_runtime.range, metrics.timing_distribution.geckoview_startup_runtime.sum, metrics.timing_distribution.geckoview_startup_runtime.time_unit, metrics.timing_distribution.geckoview_startup_runtime.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.geckoview_startup_runtime.values) AS `values` + ) AS `values` + + ) AS `geckoview_startup_runtime` + , + STRUCT( + metrics.timing_distribution.javascript_gc_compact_time.bucket_count, metrics.timing_distribution.javascript_gc_compact_time.count, metrics.timing_distribution.javascript_gc_compact_time.histogram_type, metrics.timing_distribution.javascript_gc_compact_time.overflow, metrics.timing_distribution.javascript_gc_compact_time.range, metrics.timing_distribution.javascript_gc_compact_time.sum, metrics.timing_distribution.javascript_gc_compact_time.time_unit, metrics.timing_distribution.javascript_gc_compact_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_gc_compact_time.values) AS `values` + ) AS `values` + + ) AS `javascript_gc_compact_time` + , + STRUCT( + metrics.timing_distribution.javascript_gc_mark_roots_time.bucket_count, metrics.timing_distribution.javascript_gc_mark_roots_time.count, metrics.timing_distribution.javascript_gc_mark_roots_time.histogram_type, metrics.timing_distribution.javascript_gc_mark_roots_time.overflow, metrics.timing_distribution.javascript_gc_mark_roots_time.range, metrics.timing_distribution.javascript_gc_mark_roots_time.sum, metrics.timing_distribution.javascript_gc_mark_roots_time.time_unit, metrics.timing_distribution.javascript_gc_mark_roots_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_gc_mark_roots_time.values) AS `values` + ) AS `values` + + ) AS `javascript_gc_mark_roots_time` + , + STRUCT( + metrics.timing_distribution.javascript_gc_mark_time.bucket_count, metrics.timing_distribution.javascript_gc_mark_time.count, metrics.timing_distribution.javascript_gc_mark_time.histogram_type, metrics.timing_distribution.javascript_gc_mark_time.overflow, metrics.timing_distribution.javascript_gc_mark_time.range, metrics.timing_distribution.javascript_gc_mark_time.sum, metrics.timing_distribution.javascript_gc_mark_time.time_unit, metrics.timing_distribution.javascript_gc_mark_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_gc_mark_time.values) AS `values` + ) AS `values` + + ) AS `javascript_gc_mark_time` + , + STRUCT( + metrics.timing_distribution.javascript_gc_minor_time.bucket_count, metrics.timing_distribution.javascript_gc_minor_time.count, metrics.timing_distribution.javascript_gc_minor_time.histogram_type, metrics.timing_distribution.javascript_gc_minor_time.overflow, metrics.timing_distribution.javascript_gc_minor_time.range, metrics.timing_distribution.javascript_gc_minor_time.sum, metrics.timing_distribution.javascript_gc_minor_time.time_unit, metrics.timing_distribution.javascript_gc_minor_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_gc_minor_time.values) AS `values` + ) AS `values` + + ) AS `javascript_gc_minor_time` + , + STRUCT( + metrics.timing_distribution.javascript_gc_prepare_time.bucket_count, metrics.timing_distribution.javascript_gc_prepare_time.count, metrics.timing_distribution.javascript_gc_prepare_time.histogram_type, metrics.timing_distribution.javascript_gc_prepare_time.overflow, metrics.timing_distribution.javascript_gc_prepare_time.range, metrics.timing_distribution.javascript_gc_prepare_time.sum, metrics.timing_distribution.javascript_gc_prepare_time.time_unit, metrics.timing_distribution.javascript_gc_prepare_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_gc_prepare_time.values) AS `values` + ) AS `values` + + ) AS `javascript_gc_prepare_time` + , + STRUCT( + metrics.timing_distribution.javascript_gc_slice_time.bucket_count, metrics.timing_distribution.javascript_gc_slice_time.count, metrics.timing_distribution.javascript_gc_slice_time.histogram_type, metrics.timing_distribution.javascript_gc_slice_time.overflow, metrics.timing_distribution.javascript_gc_slice_time.range, metrics.timing_distribution.javascript_gc_slice_time.sum, metrics.timing_distribution.javascript_gc_slice_time.time_unit, metrics.timing_distribution.javascript_gc_slice_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_gc_slice_time.values) AS `values` + ) AS `values` + + ) AS `javascript_gc_slice_time` + , + STRUCT( + metrics.timing_distribution.javascript_gc_sweep_time.bucket_count, metrics.timing_distribution.javascript_gc_sweep_time.count, metrics.timing_distribution.javascript_gc_sweep_time.histogram_type, metrics.timing_distribution.javascript_gc_sweep_time.overflow, metrics.timing_distribution.javascript_gc_sweep_time.range, metrics.timing_distribution.javascript_gc_sweep_time.sum, metrics.timing_distribution.javascript_gc_sweep_time.time_unit, metrics.timing_distribution.javascript_gc_sweep_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_gc_sweep_time.values) AS `values` + ) AS `values` + + ) AS `javascript_gc_sweep_time` + , + STRUCT( + metrics.timing_distribution.javascript_gc_total_time.bucket_count, metrics.timing_distribution.javascript_gc_total_time.count, metrics.timing_distribution.javascript_gc_total_time.histogram_type, metrics.timing_distribution.javascript_gc_total_time.overflow, metrics.timing_distribution.javascript_gc_total_time.range, metrics.timing_distribution.javascript_gc_total_time.sum, metrics.timing_distribution.javascript_gc_total_time.time_unit, metrics.timing_distribution.javascript_gc_total_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.javascript_gc_total_time.values) AS `values` + ) AS `values` + + ) AS `javascript_gc_total_time` + , + STRUCT( + metrics.timing_distribution.performance_clone_deserialize_time.bucket_count, metrics.timing_distribution.performance_clone_deserialize_time.count, metrics.timing_distribution.performance_clone_deserialize_time.histogram_type, metrics.timing_distribution.performance_clone_deserialize_time.overflow, metrics.timing_distribution.performance_clone_deserialize_time.range, metrics.timing_distribution.performance_clone_deserialize_time.sum, metrics.timing_distribution.performance_clone_deserialize_time.time_unit, metrics.timing_distribution.performance_clone_deserialize_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_clone_deserialize_time.values) AS `values` + ) AS `values` + + ) AS `performance_clone_deserialize_time` + , + STRUCT( + metrics.timing_distribution.performance_page_total_content_page_load.bucket_count, metrics.timing_distribution.performance_page_total_content_page_load.count, metrics.timing_distribution.performance_page_total_content_page_load.histogram_type, metrics.timing_distribution.performance_page_total_content_page_load.overflow, metrics.timing_distribution.performance_page_total_content_page_load.range, metrics.timing_distribution.performance_page_total_content_page_load.sum, metrics.timing_distribution.performance_page_total_content_page_load.time_unit, metrics.timing_distribution.performance_page_total_content_page_load.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_page_total_content_page_load.values) AS `values` + ) AS `values` + + ) AS `performance_page_total_content_page_load` + , + STRUCT( + metrics.timing_distribution.performance_pageload_req_anim_frame_callback.bucket_count, metrics.timing_distribution.performance_pageload_req_anim_frame_callback.count, metrics.timing_distribution.performance_pageload_req_anim_frame_callback.histogram_type, metrics.timing_distribution.performance_pageload_req_anim_frame_callback.overflow, metrics.timing_distribution.performance_pageload_req_anim_frame_callback.range, metrics.timing_distribution.performance_pageload_req_anim_frame_callback.sum, metrics.timing_distribution.performance_pageload_req_anim_frame_callback.time_unit, metrics.timing_distribution.performance_pageload_req_anim_frame_callback.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_req_anim_frame_callback.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_req_anim_frame_callback` + , + STRUCT( + metrics.timing_distribution.performance_responsiveness_req_anim_frame_callback.bucket_count, metrics.timing_distribution.performance_responsiveness_req_anim_frame_callback.count, metrics.timing_distribution.performance_responsiveness_req_anim_frame_callback.histogram_type, metrics.timing_distribution.performance_responsiveness_req_anim_frame_callback.overflow, metrics.timing_distribution.performance_responsiveness_req_anim_frame_callback.range, metrics.timing_distribution.performance_responsiveness_req_anim_frame_callback.sum, metrics.timing_distribution.performance_responsiveness_req_anim_frame_callback.time_unit, metrics.timing_distribution.performance_responsiveness_req_anim_frame_callback.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_responsiveness_req_anim_frame_callback.values) AS `values` + ) AS `values` + + ) AS `performance_responsiveness_req_anim_frame_callback` + , + STRUCT( + metrics.timing_distribution.performance_time_response_start.bucket_count, metrics.timing_distribution.performance_time_response_start.count, metrics.timing_distribution.performance_time_response_start.histogram_type, metrics.timing_distribution.performance_time_response_start.overflow, metrics.timing_distribution.performance_time_response_start.range, metrics.timing_distribution.performance_time_response_start.sum, metrics.timing_distribution.performance_time_response_start.time_unit, metrics.timing_distribution.performance_time_response_start.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_time_response_start.values) AS `values` + ) AS `values` + + ) AS `performance_time_response_start` + , + STRUCT( + metrics.timing_distribution.httpsfirst_downgrade_time.bucket_count, metrics.timing_distribution.httpsfirst_downgrade_time.count, metrics.timing_distribution.httpsfirst_downgrade_time.histogram_type, metrics.timing_distribution.httpsfirst_downgrade_time.overflow, metrics.timing_distribution.httpsfirst_downgrade_time.range, metrics.timing_distribution.httpsfirst_downgrade_time.sum, metrics.timing_distribution.httpsfirst_downgrade_time.time_unit, metrics.timing_distribution.httpsfirst_downgrade_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.httpsfirst_downgrade_time.values) AS `values` + ) AS `values` + + ) AS `httpsfirst_downgrade_time` + , + STRUCT( + metrics.timing_distribution.httpsfirst_downgrade_time_schemeless.bucket_count, metrics.timing_distribution.httpsfirst_downgrade_time_schemeless.count, metrics.timing_distribution.httpsfirst_downgrade_time_schemeless.histogram_type, metrics.timing_distribution.httpsfirst_downgrade_time_schemeless.overflow, metrics.timing_distribution.httpsfirst_downgrade_time_schemeless.range, metrics.timing_distribution.httpsfirst_downgrade_time_schemeless.sum, metrics.timing_distribution.httpsfirst_downgrade_time_schemeless.time_unit, metrics.timing_distribution.httpsfirst_downgrade_time_schemeless.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.httpsfirst_downgrade_time_schemeless.values) AS `values` + ) AS `values` + + ) AS `httpsfirst_downgrade_time_schemeless` + , + STRUCT( + metrics.timing_distribution.networking_http_content_cssloader_ondatafinished_to_onstop_delay.bucket_count, metrics.timing_distribution.networking_http_content_cssloader_ondatafinished_to_onstop_delay.count, metrics.timing_distribution.networking_http_content_cssloader_ondatafinished_to_onstop_delay.histogram_type, metrics.timing_distribution.networking_http_content_cssloader_ondatafinished_to_onstop_delay.overflow, metrics.timing_distribution.networking_http_content_cssloader_ondatafinished_to_onstop_delay.range, metrics.timing_distribution.networking_http_content_cssloader_ondatafinished_to_onstop_delay.sum, metrics.timing_distribution.networking_http_content_cssloader_ondatafinished_to_onstop_delay.time_unit, metrics.timing_distribution.networking_http_content_cssloader_ondatafinished_to_onstop_delay.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_content_cssloader_ondatafinished_to_onstop_delay.values) AS `values` + ) AS `values` + + ) AS `networking_http_content_cssloader_ondatafinished_to_onstop_delay` + , + STRUCT( + metrics.timing_distribution.cert_verifier_cert_trust_evaluation_time.bucket_count, metrics.timing_distribution.cert_verifier_cert_trust_evaluation_time.count, metrics.timing_distribution.cert_verifier_cert_trust_evaluation_time.histogram_type, metrics.timing_distribution.cert_verifier_cert_trust_evaluation_time.overflow, metrics.timing_distribution.cert_verifier_cert_trust_evaluation_time.range, metrics.timing_distribution.cert_verifier_cert_trust_evaluation_time.sum, metrics.timing_distribution.cert_verifier_cert_trust_evaluation_time.time_unit, metrics.timing_distribution.cert_verifier_cert_trust_evaluation_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.cert_verifier_cert_trust_evaluation_time.values) AS `values` + ) AS `values` + + ) AS `cert_verifier_cert_trust_evaluation_time` + , + STRUCT( + metrics.timing_distribution.networking_dns_native_https_call_time.bucket_count, metrics.timing_distribution.networking_dns_native_https_call_time.count, metrics.timing_distribution.networking_dns_native_https_call_time.histogram_type, metrics.timing_distribution.networking_dns_native_https_call_time.overflow, metrics.timing_distribution.networking_dns_native_https_call_time.range, metrics.timing_distribution.networking_dns_native_https_call_time.sum, metrics.timing_distribution.networking_dns_native_https_call_time.time_unit, metrics.timing_distribution.networking_dns_native_https_call_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_dns_native_https_call_time.values) AS `values` + ) AS `values` + + ) AS `networking_dns_native_https_call_time` + , + STRUCT( + metrics.timing_distribution.relevancy_classify_duration.bucket_count, metrics.timing_distribution.relevancy_classify_duration.count, metrics.timing_distribution.relevancy_classify_duration.histogram_type, metrics.timing_distribution.relevancy_classify_duration.overflow, metrics.timing_distribution.relevancy_classify_duration.range, metrics.timing_distribution.relevancy_classify_duration.sum, metrics.timing_distribution.relevancy_classify_duration.time_unit, metrics.timing_distribution.relevancy_classify_duration.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.relevancy_classify_duration.values) AS `values` + ) AS `values` + + ) AS `relevancy_classify_duration` + , + STRUCT( + metrics.timing_distribution.bounce_tracking_protection_purge_duration.bucket_count, metrics.timing_distribution.bounce_tracking_protection_purge_duration.count, metrics.timing_distribution.bounce_tracking_protection_purge_duration.histogram_type, metrics.timing_distribution.bounce_tracking_protection_purge_duration.overflow, metrics.timing_distribution.bounce_tracking_protection_purge_duration.range, metrics.timing_distribution.bounce_tracking_protection_purge_duration.sum, metrics.timing_distribution.bounce_tracking_protection_purge_duration.time_unit, metrics.timing_distribution.bounce_tracking_protection_purge_duration.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.bounce_tracking_protection_purge_duration.values) AS `values` + ) AS `values` + + ) AS `bounce_tracking_protection_purge_duration` + , + STRUCT( + metrics.timing_distribution.performance_pageload_async_sheet_load.bucket_count, metrics.timing_distribution.performance_pageload_async_sheet_load.count, metrics.timing_distribution.performance_pageload_async_sheet_load.histogram_type, metrics.timing_distribution.performance_pageload_async_sheet_load.overflow, metrics.timing_distribution.performance_pageload_async_sheet_load.range, metrics.timing_distribution.performance_pageload_async_sheet_load.sum, metrics.timing_distribution.performance_pageload_async_sheet_load.time_unit, metrics.timing_distribution.performance_pageload_async_sheet_load.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_async_sheet_load.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_async_sheet_load` + , + STRUCT( + metrics.timing_distribution.networking_http_onstart_suspend_total_time.bucket_count, metrics.timing_distribution.networking_http_onstart_suspend_total_time.count, metrics.timing_distribution.networking_http_onstart_suspend_total_time.histogram_type, metrics.timing_distribution.networking_http_onstart_suspend_total_time.overflow, metrics.timing_distribution.networking_http_onstart_suspend_total_time.range, metrics.timing_distribution.networking_http_onstart_suspend_total_time.sum, metrics.timing_distribution.networking_http_onstart_suspend_total_time.time_unit, metrics.timing_distribution.networking_http_onstart_suspend_total_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_onstart_suspend_total_time.values) AS `values` + ) AS `values` + + ) AS `networking_http_onstart_suspend_total_time` + , + STRUCT( + metrics.timing_distribution.performance_pageload_eh_fcp_preconnect.bucket_count, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect.count, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect.histogram_type, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect.overflow, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect.range, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect.sum, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect.time_unit, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_eh_fcp_preconnect.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_eh_fcp_preconnect` + , + STRUCT( + metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_with_eh.bucket_count, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_with_eh.count, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_with_eh.histogram_type, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_with_eh.overflow, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_with_eh.range, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_with_eh.sum, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_with_eh.time_unit, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_with_eh.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_with_eh.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_eh_fcp_preconnect_preload_with_eh` + , + STRUCT( + metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_without_eh.bucket_count, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_without_eh.count, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_without_eh.histogram_type, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_without_eh.overflow, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_without_eh.range, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_without_eh.sum, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_without_eh.time_unit, metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_without_eh.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_eh_fcp_preconnect_preload_without_eh.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_eh_fcp_preconnect_preload_without_eh` + , + STRUCT( + metrics.timing_distribution.performance_pageload_eh_fcp_preload_with_eh.bucket_count, metrics.timing_distribution.performance_pageload_eh_fcp_preload_with_eh.count, metrics.timing_distribution.performance_pageload_eh_fcp_preload_with_eh.histogram_type, metrics.timing_distribution.performance_pageload_eh_fcp_preload_with_eh.overflow, metrics.timing_distribution.performance_pageload_eh_fcp_preload_with_eh.range, metrics.timing_distribution.performance_pageload_eh_fcp_preload_with_eh.sum, metrics.timing_distribution.performance_pageload_eh_fcp_preload_with_eh.time_unit, metrics.timing_distribution.performance_pageload_eh_fcp_preload_with_eh.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_eh_fcp_preload_with_eh.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_eh_fcp_preload_with_eh` + , + STRUCT( + metrics.timing_distribution.performance_pageload_eh_fcp_preload_without_eh.bucket_count, metrics.timing_distribution.performance_pageload_eh_fcp_preload_without_eh.count, metrics.timing_distribution.performance_pageload_eh_fcp_preload_without_eh.histogram_type, metrics.timing_distribution.performance_pageload_eh_fcp_preload_without_eh.overflow, metrics.timing_distribution.performance_pageload_eh_fcp_preload_without_eh.range, metrics.timing_distribution.performance_pageload_eh_fcp_preload_without_eh.sum, metrics.timing_distribution.performance_pageload_eh_fcp_preload_without_eh.time_unit, metrics.timing_distribution.performance_pageload_eh_fcp_preload_without_eh.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_eh_fcp_preload_without_eh.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_eh_fcp_preload_without_eh` + , + STRUCT( + metrics.timing_distribution.performance_pageload_h3p_fcp_with_priority.bucket_count, metrics.timing_distribution.performance_pageload_h3p_fcp_with_priority.count, metrics.timing_distribution.performance_pageload_h3p_fcp_with_priority.histogram_type, metrics.timing_distribution.performance_pageload_h3p_fcp_with_priority.overflow, metrics.timing_distribution.performance_pageload_h3p_fcp_with_priority.range, metrics.timing_distribution.performance_pageload_h3p_fcp_with_priority.sum, metrics.timing_distribution.performance_pageload_h3p_fcp_with_priority.time_unit, metrics.timing_distribution.performance_pageload_h3p_fcp_with_priority.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_h3p_fcp_with_priority.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_h3p_fcp_with_priority` + , + STRUCT( + metrics.timing_distribution.performance_pageload_http3_fcp_http3.bucket_count, metrics.timing_distribution.performance_pageload_http3_fcp_http3.count, metrics.timing_distribution.performance_pageload_http3_fcp_http3.histogram_type, metrics.timing_distribution.performance_pageload_http3_fcp_http3.overflow, metrics.timing_distribution.performance_pageload_http3_fcp_http3.range, metrics.timing_distribution.performance_pageload_http3_fcp_http3.sum, metrics.timing_distribution.performance_pageload_http3_fcp_http3.time_unit, metrics.timing_distribution.performance_pageload_http3_fcp_http3.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_http3_fcp_http3.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_http3_fcp_http3` + , + STRUCT( + metrics.timing_distribution.performance_pageload_http3_fcp_supports_http3.bucket_count, metrics.timing_distribution.performance_pageload_http3_fcp_supports_http3.count, metrics.timing_distribution.performance_pageload_http3_fcp_supports_http3.histogram_type, metrics.timing_distribution.performance_pageload_http3_fcp_supports_http3.overflow, metrics.timing_distribution.performance_pageload_http3_fcp_supports_http3.range, metrics.timing_distribution.performance_pageload_http3_fcp_supports_http3.sum, metrics.timing_distribution.performance_pageload_http3_fcp_supports_http3.time_unit, metrics.timing_distribution.performance_pageload_http3_fcp_supports_http3.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_http3_fcp_supports_http3.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_http3_fcp_supports_http3` + , + STRUCT( + metrics.timing_distribution.performance_pageload_http3_fcp_without_priority.bucket_count, metrics.timing_distribution.performance_pageload_http3_fcp_without_priority.count, metrics.timing_distribution.performance_pageload_http3_fcp_without_priority.histogram_type, metrics.timing_distribution.performance_pageload_http3_fcp_without_priority.overflow, metrics.timing_distribution.performance_pageload_http3_fcp_without_priority.range, metrics.timing_distribution.performance_pageload_http3_fcp_without_priority.sum, metrics.timing_distribution.performance_pageload_http3_fcp_without_priority.time_unit, metrics.timing_distribution.performance_pageload_http3_fcp_without_priority.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.performance_pageload_http3_fcp_without_priority.values) AS `values` + ) AS `values` + + ) AS `performance_pageload_http3_fcp_without_priority` + , + STRUCT( + metrics.timing_distribution.glean_database_write_time.bucket_count, metrics.timing_distribution.glean_database_write_time.count, metrics.timing_distribution.glean_database_write_time.histogram_type, metrics.timing_distribution.glean_database_write_time.overflow, metrics.timing_distribution.glean_database_write_time.range, metrics.timing_distribution.glean_database_write_time.sum, metrics.timing_distribution.glean_database_write_time.time_unit, metrics.timing_distribution.glean_database_write_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.glean_database_write_time.values) AS `values` + ) AS `values` + + ) AS `glean_database_write_time` + , + STRUCT( + metrics.timing_distribution.browser_backup_favicons_time.bucket_count, metrics.timing_distribution.browser_backup_favicons_time.count, metrics.timing_distribution.browser_backup_favicons_time.histogram_type, metrics.timing_distribution.browser_backup_favicons_time.overflow, metrics.timing_distribution.browser_backup_favicons_time.range, metrics.timing_distribution.browser_backup_favicons_time.sum, metrics.timing_distribution.browser_backup_favicons_time.time_unit, metrics.timing_distribution.browser_backup_favicons_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.browser_backup_favicons_time.values) AS `values` + ) AS `values` + + ) AS `browser_backup_favicons_time` + , + STRUCT( + metrics.timing_distribution.browser_backup_places_time.bucket_count, metrics.timing_distribution.browser_backup_places_time.count, metrics.timing_distribution.browser_backup_places_time.histogram_type, metrics.timing_distribution.browser_backup_places_time.overflow, metrics.timing_distribution.browser_backup_places_time.range, metrics.timing_distribution.browser_backup_places_time.sum, metrics.timing_distribution.browser_backup_places_time.time_unit, metrics.timing_distribution.browser_backup_places_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.browser_backup_places_time.values) AS `values` + ) AS `values` + + ) AS `browser_backup_places_time` + , + STRUCT( + metrics.timing_distribution.browser_backup_total_backup_time.bucket_count, metrics.timing_distribution.browser_backup_total_backup_time.count, metrics.timing_distribution.browser_backup_total_backup_time.histogram_type, metrics.timing_distribution.browser_backup_total_backup_time.overflow, metrics.timing_distribution.browser_backup_total_backup_time.range, metrics.timing_distribution.browser_backup_total_backup_time.sum, metrics.timing_distribution.browser_backup_total_backup_time.time_unit, metrics.timing_distribution.browser_backup_total_backup_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.browser_backup_total_backup_time.values) AS `values` + ) AS `values` + + ) AS `browser_backup_total_backup_time` + , + STRUCT( + metrics.timing_distribution.urlbar_quick_suggest_ingest_time.bucket_count, metrics.timing_distribution.urlbar_quick_suggest_ingest_time.count, metrics.timing_distribution.urlbar_quick_suggest_ingest_time.histogram_type, metrics.timing_distribution.urlbar_quick_suggest_ingest_time.overflow, metrics.timing_distribution.urlbar_quick_suggest_ingest_time.range, metrics.timing_distribution.urlbar_quick_suggest_ingest_time.sum, metrics.timing_distribution.urlbar_quick_suggest_ingest_time.time_unit, metrics.timing_distribution.urlbar_quick_suggest_ingest_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.urlbar_quick_suggest_ingest_time.values) AS `values` + ) AS `values` + + ) AS `urlbar_quick_suggest_ingest_time` + , + STRUCT( + metrics.timing_distribution.networking_cache_metadata_first_read_time.bucket_count, metrics.timing_distribution.networking_cache_metadata_first_read_time.count, metrics.timing_distribution.networking_cache_metadata_first_read_time.histogram_type, metrics.timing_distribution.networking_cache_metadata_first_read_time.overflow, metrics.timing_distribution.networking_cache_metadata_first_read_time.range, metrics.timing_distribution.networking_cache_metadata_first_read_time.sum, metrics.timing_distribution.networking_cache_metadata_first_read_time.time_unit, metrics.timing_distribution.networking_cache_metadata_first_read_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_cache_metadata_first_read_time.values) AS `values` + ) AS `values` + + ) AS `networking_cache_metadata_first_read_time` + , + STRUCT( + metrics.timing_distribution.networking_cache_metadata_second_read_time.bucket_count, metrics.timing_distribution.networking_cache_metadata_second_read_time.count, metrics.timing_distribution.networking_cache_metadata_second_read_time.histogram_type, metrics.timing_distribution.networking_cache_metadata_second_read_time.overflow, metrics.timing_distribution.networking_cache_metadata_second_read_time.range, metrics.timing_distribution.networking_cache_metadata_second_read_time.sum, metrics.timing_distribution.networking_cache_metadata_second_read_time.time_unit, metrics.timing_distribution.networking_cache_metadata_second_read_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_cache_metadata_second_read_time.values) AS `values` + ) AS `values` + + ) AS `networking_cache_metadata_second_read_time` + , + STRUCT( + metrics.timing_distribution.cert_verification_time_failure.bucket_count, metrics.timing_distribution.cert_verification_time_failure.count, metrics.timing_distribution.cert_verification_time_failure.histogram_type, metrics.timing_distribution.cert_verification_time_failure.overflow, metrics.timing_distribution.cert_verification_time_failure.range, metrics.timing_distribution.cert_verification_time_failure.sum, metrics.timing_distribution.cert_verification_time_failure.time_unit, metrics.timing_distribution.cert_verification_time_failure.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.cert_verification_time_failure.values) AS `values` + ) AS `values` + + ) AS `cert_verification_time_failure` + , + STRUCT( + metrics.timing_distribution.cert_verification_time_success.bucket_count, metrics.timing_distribution.cert_verification_time_success.count, metrics.timing_distribution.cert_verification_time_success.histogram_type, metrics.timing_distribution.cert_verification_time_success.overflow, metrics.timing_distribution.cert_verification_time_success.range, metrics.timing_distribution.cert_verification_time_success.sum, metrics.timing_distribution.cert_verification_time_success.time_unit, metrics.timing_distribution.cert_verification_time_success.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.cert_verification_time_success.values) AS `values` + ) AS `values` + + ) AS `cert_verification_time_success` + , + STRUCT( + metrics.timing_distribution.ocsp_request_time_cancel.bucket_count, metrics.timing_distribution.ocsp_request_time_cancel.count, metrics.timing_distribution.ocsp_request_time_cancel.histogram_type, metrics.timing_distribution.ocsp_request_time_cancel.overflow, metrics.timing_distribution.ocsp_request_time_cancel.range, metrics.timing_distribution.ocsp_request_time_cancel.sum, metrics.timing_distribution.ocsp_request_time_cancel.time_unit, metrics.timing_distribution.ocsp_request_time_cancel.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.ocsp_request_time_cancel.values) AS `values` + ) AS `values` + + ) AS `ocsp_request_time_cancel` + , + STRUCT( + metrics.timing_distribution.ocsp_request_time_failure.bucket_count, metrics.timing_distribution.ocsp_request_time_failure.count, metrics.timing_distribution.ocsp_request_time_failure.histogram_type, metrics.timing_distribution.ocsp_request_time_failure.overflow, metrics.timing_distribution.ocsp_request_time_failure.range, metrics.timing_distribution.ocsp_request_time_failure.sum, metrics.timing_distribution.ocsp_request_time_failure.time_unit, metrics.timing_distribution.ocsp_request_time_failure.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.ocsp_request_time_failure.values) AS `values` + ) AS `values` + + ) AS `ocsp_request_time_failure` + , + STRUCT( + metrics.timing_distribution.ocsp_request_time_success.bucket_count, metrics.timing_distribution.ocsp_request_time_success.count, metrics.timing_distribution.ocsp_request_time_success.histogram_type, metrics.timing_distribution.ocsp_request_time_success.overflow, metrics.timing_distribution.ocsp_request_time_success.range, metrics.timing_distribution.ocsp_request_time_success.sum, metrics.timing_distribution.ocsp_request_time_success.time_unit, metrics.timing_distribution.ocsp_request_time_success.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.ocsp_request_time_success.values) AS `values` + ) AS `values` + + ) AS `ocsp_request_time_success` + , + STRUCT( + metrics.timing_distribution.networking_http_content_ondatafinished_delay_2.bucket_count, metrics.timing_distribution.networking_http_content_ondatafinished_delay_2.count, metrics.timing_distribution.networking_http_content_ondatafinished_delay_2.histogram_type, metrics.timing_distribution.networking_http_content_ondatafinished_delay_2.overflow, metrics.timing_distribution.networking_http_content_ondatafinished_delay_2.range, metrics.timing_distribution.networking_http_content_ondatafinished_delay_2.sum, metrics.timing_distribution.networking_http_content_ondatafinished_delay_2.time_unit, metrics.timing_distribution.networking_http_content_ondatafinished_delay_2.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_http_content_ondatafinished_delay_2.values) AS `values` + ) AS `values` + + ) AS `networking_http_content_ondatafinished_delay_2` + , + STRUCT( + metrics.timing_distribution.ls_preparedatastore_processing_time.bucket_count, metrics.timing_distribution.ls_preparedatastore_processing_time.count, metrics.timing_distribution.ls_preparedatastore_processing_time.histogram_type, metrics.timing_distribution.ls_preparedatastore_processing_time.overflow, metrics.timing_distribution.ls_preparedatastore_processing_time.range, metrics.timing_distribution.ls_preparedatastore_processing_time.sum, metrics.timing_distribution.ls_preparedatastore_processing_time.time_unit, metrics.timing_distribution.ls_preparedatastore_processing_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.ls_preparedatastore_processing_time.values) AS `values` + ) AS `values` + + ) AS `ls_preparedatastore_processing_time` + , + STRUCT( + metrics.timing_distribution.ls_preparelsdatabase_processing_time.bucket_count, metrics.timing_distribution.ls_preparelsdatabase_processing_time.count, metrics.timing_distribution.ls_preparelsdatabase_processing_time.histogram_type, metrics.timing_distribution.ls_preparelsdatabase_processing_time.overflow, metrics.timing_distribution.ls_preparelsdatabase_processing_time.range, metrics.timing_distribution.ls_preparelsdatabase_processing_time.sum, metrics.timing_distribution.ls_preparelsdatabase_processing_time.time_unit, metrics.timing_distribution.ls_preparelsdatabase_processing_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.ls_preparelsdatabase_processing_time.values) AS `values` + ) AS `values` + + ) AS `ls_preparelsdatabase_processing_time` + , + STRUCT( + metrics.timing_distribution.networking_sqlite_cookies_block_main_thread.bucket_count, metrics.timing_distribution.networking_sqlite_cookies_block_main_thread.count, metrics.timing_distribution.networking_sqlite_cookies_block_main_thread.histogram_type, metrics.timing_distribution.networking_sqlite_cookies_block_main_thread.overflow, metrics.timing_distribution.networking_sqlite_cookies_block_main_thread.range, metrics.timing_distribution.networking_sqlite_cookies_block_main_thread.sum, metrics.timing_distribution.networking_sqlite_cookies_block_main_thread.time_unit, metrics.timing_distribution.networking_sqlite_cookies_block_main_thread.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_sqlite_cookies_block_main_thread.values) AS `values` + ) AS `values` + + ) AS `networking_sqlite_cookies_block_main_thread` + , + STRUCT( + metrics.timing_distribution.networking_sqlite_cookies_time_to_block_main_thread.bucket_count, metrics.timing_distribution.networking_sqlite_cookies_time_to_block_main_thread.count, metrics.timing_distribution.networking_sqlite_cookies_time_to_block_main_thread.histogram_type, metrics.timing_distribution.networking_sqlite_cookies_time_to_block_main_thread.overflow, metrics.timing_distribution.networking_sqlite_cookies_time_to_block_main_thread.range, metrics.timing_distribution.networking_sqlite_cookies_time_to_block_main_thread.sum, metrics.timing_distribution.networking_sqlite_cookies_time_to_block_main_thread.time_unit, metrics.timing_distribution.networking_sqlite_cookies_time_to_block_main_thread.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.networking_sqlite_cookies_time_to_block_main_thread.values) AS `values` + ) AS `values` + + ) AS `networking_sqlite_cookies_time_to_block_main_thread` + , + STRUCT( + metrics.timing_distribution.network_cache_read_time.bucket_count, metrics.timing_distribution.network_cache_read_time.count, metrics.timing_distribution.network_cache_read_time.histogram_type, metrics.timing_distribution.network_cache_read_time.overflow, metrics.timing_distribution.network_cache_read_time.range, metrics.timing_distribution.network_cache_read_time.sum, metrics.timing_distribution.network_cache_read_time.time_unit, metrics.timing_distribution.network_cache_read_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_cache_read_time.values) AS `values` + ) AS `values` + + ) AS `network_cache_read_time` + , + STRUCT( + metrics.timing_distribution.network_complete_load.bucket_count, metrics.timing_distribution.network_complete_load.count, metrics.timing_distribution.network_complete_load.histogram_type, metrics.timing_distribution.network_complete_load.overflow, metrics.timing_distribution.network_complete_load.range, metrics.timing_distribution.network_complete_load.sum, metrics.timing_distribution.network_complete_load.time_unit, metrics.timing_distribution.network_complete_load.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_complete_load.values) AS `values` + ) AS `values` + + ) AS `network_complete_load` + , + STRUCT( + metrics.timing_distribution.network_complete_load_cached.bucket_count, metrics.timing_distribution.network_complete_load_cached.count, metrics.timing_distribution.network_complete_load_cached.histogram_type, metrics.timing_distribution.network_complete_load_cached.overflow, metrics.timing_distribution.network_complete_load_cached.range, metrics.timing_distribution.network_complete_load_cached.sum, metrics.timing_distribution.network_complete_load_cached.time_unit, metrics.timing_distribution.network_complete_load_cached.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_complete_load_cached.values) AS `values` + ) AS `values` + + ) AS `network_complete_load_cached` + , + STRUCT( + metrics.timing_distribution.network_complete_load_net.bucket_count, metrics.timing_distribution.network_complete_load_net.count, metrics.timing_distribution.network_complete_load_net.histogram_type, metrics.timing_distribution.network_complete_load_net.overflow, metrics.timing_distribution.network_complete_load_net.range, metrics.timing_distribution.network_complete_load_net.sum, metrics.timing_distribution.network_complete_load_net.time_unit, metrics.timing_distribution.network_complete_load_net.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_complete_load_net.values) AS `values` + ) AS `values` + + ) AS `network_complete_load_net` + , + STRUCT( + metrics.timing_distribution.network_first_sent_to_last_received.bucket_count, metrics.timing_distribution.network_first_sent_to_last_received.count, metrics.timing_distribution.network_first_sent_to_last_received.histogram_type, metrics.timing_distribution.network_first_sent_to_last_received.overflow, metrics.timing_distribution.network_first_sent_to_last_received.range, metrics.timing_distribution.network_first_sent_to_last_received.sum, metrics.timing_distribution.network_first_sent_to_last_received.time_unit, metrics.timing_distribution.network_first_sent_to_last_received.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_first_sent_to_last_received.values) AS `values` + ) AS `values` + + ) AS `network_first_sent_to_last_received` + , + STRUCT( + metrics.timing_distribution.network_http_revalidation.bucket_count, metrics.timing_distribution.network_http_revalidation.count, metrics.timing_distribution.network_http_revalidation.histogram_type, metrics.timing_distribution.network_http_revalidation.overflow, metrics.timing_distribution.network_http_revalidation.range, metrics.timing_distribution.network_http_revalidation.sum, metrics.timing_distribution.network_http_revalidation.time_unit, metrics.timing_distribution.network_http_revalidation.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_http_revalidation.values) AS `values` + ) AS `values` + + ) AS `network_http_revalidation` + , + STRUCT( + metrics.timing_distribution.network_open_to_first_received.bucket_count, metrics.timing_distribution.network_open_to_first_received.count, metrics.timing_distribution.network_open_to_first_received.histogram_type, metrics.timing_distribution.network_open_to_first_received.overflow, metrics.timing_distribution.network_open_to_first_received.range, metrics.timing_distribution.network_open_to_first_received.sum, metrics.timing_distribution.network_open_to_first_received.time_unit, metrics.timing_distribution.network_open_to_first_received.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_open_to_first_received.values) AS `values` + ) AS `values` + + ) AS `network_open_to_first_received` + , + STRUCT( + metrics.timing_distribution.network_open_to_first_sent.bucket_count, metrics.timing_distribution.network_open_to_first_sent.count, metrics.timing_distribution.network_open_to_first_sent.histogram_type, metrics.timing_distribution.network_open_to_first_sent.overflow, metrics.timing_distribution.network_open_to_first_sent.range, metrics.timing_distribution.network_open_to_first_sent.sum, metrics.timing_distribution.network_open_to_first_sent.time_unit, metrics.timing_distribution.network_open_to_first_sent.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_open_to_first_sent.values) AS `values` + ) AS `values` + + ) AS `network_open_to_first_sent` + , + STRUCT( + metrics.timing_distribution.network_sub_cache_read_time.bucket_count, metrics.timing_distribution.network_sub_cache_read_time.count, metrics.timing_distribution.network_sub_cache_read_time.histogram_type, metrics.timing_distribution.network_sub_cache_read_time.overflow, metrics.timing_distribution.network_sub_cache_read_time.range, metrics.timing_distribution.network_sub_cache_read_time.sum, metrics.timing_distribution.network_sub_cache_read_time.time_unit, metrics.timing_distribution.network_sub_cache_read_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_cache_read_time.values) AS `values` + ) AS `values` + + ) AS `network_sub_cache_read_time` + , + STRUCT( + metrics.timing_distribution.network_sub_complete_load.bucket_count, metrics.timing_distribution.network_sub_complete_load.count, metrics.timing_distribution.network_sub_complete_load.histogram_type, metrics.timing_distribution.network_sub_complete_load.overflow, metrics.timing_distribution.network_sub_complete_load.range, metrics.timing_distribution.network_sub_complete_load.sum, metrics.timing_distribution.network_sub_complete_load.time_unit, metrics.timing_distribution.network_sub_complete_load.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_complete_load.values) AS `values` + ) AS `values` + + ) AS `network_sub_complete_load` + , + STRUCT( + metrics.timing_distribution.network_sub_complete_load_cached.bucket_count, metrics.timing_distribution.network_sub_complete_load_cached.count, metrics.timing_distribution.network_sub_complete_load_cached.histogram_type, metrics.timing_distribution.network_sub_complete_load_cached.overflow, metrics.timing_distribution.network_sub_complete_load_cached.range, metrics.timing_distribution.network_sub_complete_load_cached.sum, metrics.timing_distribution.network_sub_complete_load_cached.time_unit, metrics.timing_distribution.network_sub_complete_load_cached.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_complete_load_cached.values) AS `values` + ) AS `values` + + ) AS `network_sub_complete_load_cached` + , + STRUCT( + metrics.timing_distribution.network_sub_complete_load_net.bucket_count, metrics.timing_distribution.network_sub_complete_load_net.count, metrics.timing_distribution.network_sub_complete_load_net.histogram_type, metrics.timing_distribution.network_sub_complete_load_net.overflow, metrics.timing_distribution.network_sub_complete_load_net.range, metrics.timing_distribution.network_sub_complete_load_net.sum, metrics.timing_distribution.network_sub_complete_load_net.time_unit, metrics.timing_distribution.network_sub_complete_load_net.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_complete_load_net.values) AS `values` + ) AS `values` + + ) AS `network_sub_complete_load_net` + , + STRUCT( + metrics.timing_distribution.network_sub_dns_end.bucket_count, metrics.timing_distribution.network_sub_dns_end.count, metrics.timing_distribution.network_sub_dns_end.histogram_type, metrics.timing_distribution.network_sub_dns_end.overflow, metrics.timing_distribution.network_sub_dns_end.range, metrics.timing_distribution.network_sub_dns_end.sum, metrics.timing_distribution.network_sub_dns_end.time_unit, metrics.timing_distribution.network_sub_dns_end.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_dns_end.values) AS `values` + ) AS `values` + + ) AS `network_sub_dns_end` + , + STRUCT( + metrics.timing_distribution.network_sub_dns_start.bucket_count, metrics.timing_distribution.network_sub_dns_start.count, metrics.timing_distribution.network_sub_dns_start.histogram_type, metrics.timing_distribution.network_sub_dns_start.overflow, metrics.timing_distribution.network_sub_dns_start.range, metrics.timing_distribution.network_sub_dns_start.sum, metrics.timing_distribution.network_sub_dns_start.time_unit, metrics.timing_distribution.network_sub_dns_start.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_dns_start.values) AS `values` + ) AS `values` + + ) AS `network_sub_dns_start` + , + STRUCT( + metrics.timing_distribution.network_sub_first_from_cache.bucket_count, metrics.timing_distribution.network_sub_first_from_cache.count, metrics.timing_distribution.network_sub_first_from_cache.histogram_type, metrics.timing_distribution.network_sub_first_from_cache.overflow, metrics.timing_distribution.network_sub_first_from_cache.range, metrics.timing_distribution.network_sub_first_from_cache.sum, metrics.timing_distribution.network_sub_first_from_cache.time_unit, metrics.timing_distribution.network_sub_first_from_cache.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_first_from_cache.values) AS `values` + ) AS `values` + + ) AS `network_sub_first_from_cache` + , + STRUCT( + metrics.timing_distribution.network_sub_first_sent_to_last_received.bucket_count, metrics.timing_distribution.network_sub_first_sent_to_last_received.count, metrics.timing_distribution.network_sub_first_sent_to_last_received.histogram_type, metrics.timing_distribution.network_sub_first_sent_to_last_received.overflow, metrics.timing_distribution.network_sub_first_sent_to_last_received.range, metrics.timing_distribution.network_sub_first_sent_to_last_received.sum, metrics.timing_distribution.network_sub_first_sent_to_last_received.time_unit, metrics.timing_distribution.network_sub_first_sent_to_last_received.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_first_sent_to_last_received.values) AS `values` + ) AS `values` + + ) AS `network_sub_first_sent_to_last_received` + , + STRUCT( + metrics.timing_distribution.network_sub_http_revalidation.bucket_count, metrics.timing_distribution.network_sub_http_revalidation.count, metrics.timing_distribution.network_sub_http_revalidation.histogram_type, metrics.timing_distribution.network_sub_http_revalidation.overflow, metrics.timing_distribution.network_sub_http_revalidation.range, metrics.timing_distribution.network_sub_http_revalidation.sum, metrics.timing_distribution.network_sub_http_revalidation.time_unit, metrics.timing_distribution.network_sub_http_revalidation.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_http_revalidation.values) AS `values` + ) AS `values` + + ) AS `network_sub_http_revalidation` + , + STRUCT( + metrics.timing_distribution.network_sub_open_to_first_received.bucket_count, metrics.timing_distribution.network_sub_open_to_first_received.count, metrics.timing_distribution.network_sub_open_to_first_received.histogram_type, metrics.timing_distribution.network_sub_open_to_first_received.overflow, metrics.timing_distribution.network_sub_open_to_first_received.range, metrics.timing_distribution.network_sub_open_to_first_received.sum, metrics.timing_distribution.network_sub_open_to_first_received.time_unit, metrics.timing_distribution.network_sub_open_to_first_received.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_open_to_first_received.values) AS `values` + ) AS `values` + + ) AS `network_sub_open_to_first_received` + , + STRUCT( + metrics.timing_distribution.network_sub_open_to_first_sent.bucket_count, metrics.timing_distribution.network_sub_open_to_first_sent.count, metrics.timing_distribution.network_sub_open_to_first_sent.histogram_type, metrics.timing_distribution.network_sub_open_to_first_sent.overflow, metrics.timing_distribution.network_sub_open_to_first_sent.range, metrics.timing_distribution.network_sub_open_to_first_sent.sum, metrics.timing_distribution.network_sub_open_to_first_sent.time_unit, metrics.timing_distribution.network_sub_open_to_first_sent.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_open_to_first_sent.values) AS `values` + ) AS `values` + + ) AS `network_sub_open_to_first_sent` + , + STRUCT( + metrics.timing_distribution.network_sub_tcp_connection.bucket_count, metrics.timing_distribution.network_sub_tcp_connection.count, metrics.timing_distribution.network_sub_tcp_connection.histogram_type, metrics.timing_distribution.network_sub_tcp_connection.overflow, metrics.timing_distribution.network_sub_tcp_connection.range, metrics.timing_distribution.network_sub_tcp_connection.sum, metrics.timing_distribution.network_sub_tcp_connection.time_unit, metrics.timing_distribution.network_sub_tcp_connection.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_tcp_connection.values) AS `values` + ) AS `values` + + ) AS `network_sub_tcp_connection` + , + STRUCT( + metrics.timing_distribution.network_sub_tls_handshake.bucket_count, metrics.timing_distribution.network_sub_tls_handshake.count, metrics.timing_distribution.network_sub_tls_handshake.histogram_type, metrics.timing_distribution.network_sub_tls_handshake.overflow, metrics.timing_distribution.network_sub_tls_handshake.range, metrics.timing_distribution.network_sub_tls_handshake.sum, metrics.timing_distribution.network_sub_tls_handshake.time_unit, metrics.timing_distribution.network_sub_tls_handshake.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_sub_tls_handshake.values) AS `values` + ) AS `values` + + ) AS `network_sub_tls_handshake` + , + STRUCT( + metrics.timing_distribution.localstorage_database_request_allow_to_close_response_time.bucket_count, metrics.timing_distribution.localstorage_database_request_allow_to_close_response_time.count, metrics.timing_distribution.localstorage_database_request_allow_to_close_response_time.histogram_type, metrics.timing_distribution.localstorage_database_request_allow_to_close_response_time.overflow, metrics.timing_distribution.localstorage_database_request_allow_to_close_response_time.range, metrics.timing_distribution.localstorage_database_request_allow_to_close_response_time.sum, metrics.timing_distribution.localstorage_database_request_allow_to_close_response_time.time_unit, metrics.timing_distribution.localstorage_database_request_allow_to_close_response_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.localstorage_database_request_allow_to_close_response_time.values) AS `values` + ) AS `values` + + ) AS `localstorage_database_request_allow_to_close_response_time` + , + STRUCT( + metrics.timing_distribution.network_cache_miss_time.bucket_count, metrics.timing_distribution.network_cache_miss_time.count, metrics.timing_distribution.network_cache_miss_time.histogram_type, metrics.timing_distribution.network_cache_miss_time.overflow, metrics.timing_distribution.network_cache_miss_time.range, metrics.timing_distribution.network_cache_miss_time.sum, metrics.timing_distribution.network_cache_miss_time.time_unit, metrics.timing_distribution.network_cache_miss_time.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.timing_distribution.network_cache_miss_time.values) AS `values` + ) AS `values` + + ) AS `network_cache_miss_time` + + ) AS `timing_distribution` + , + ARRAY( + SELECT + STRUCT( + labeled_rate.key, + ARRAY( + SELECT + STRUCT( + value.key, + STRUCT( + value.value.denominator, value.value.numerator + ) AS `value` + + ) + FROM UNNEST(labeled_rate.value) AS `value` + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_rate) AS `labeled_rate` + ) AS `labeled_rate` + , + ARRAY( + SELECT + STRUCT( + url.key, url.value + ) + FROM UNNEST(metrics.url) AS `url` + ) AS `url` + , + ARRAY( + SELECT + STRUCT( + text.key, text.value + ) + FROM UNNEST(metrics.text) AS `text` + ) AS `text` + , + STRUCT( + metrics.quantity.browser_link_open_newwindow_restriction, metrics.quantity.browser_engagement_profile_count, metrics.quantity.extensions_apis_dnr_evaluate_rules_count_max, metrics.quantity.extensions_quarantined_domains_listsize, metrics.quantity.formautofill_creditcards_autofill_profiles_count, metrics.quantity.fog_max_pings_per_minute, metrics.quantity.fog_validation_gvsv_primary_height, metrics.quantity.fog_validation_gvsv_primary_width, metrics.quantity.extensions_startup_cache_write_bytelength, metrics.quantity.gpu_process_total_launch_attempts, metrics.quantity.gpu_process_unstable_launch_attempts, metrics.quantity.data_storage_alternate_services, metrics.quantity.data_storage_client_auth_remember_list, metrics.quantity.data_storage_site_security_service_state, metrics.quantity.gfx_adapter_primary_ram, metrics.quantity.gfx_display_count, metrics.quantity.gfx_display_primary_height, metrics.quantity.gfx_display_primary_width, metrics.quantity.browser_backup_prof_d_disk_space, metrics.quantity.browser_backup_favicons_size, metrics.quantity.browser_backup_places_size, metrics.quantity.browser_backup_credentials_data_size, metrics.quantity.browser_backup_security_data_size, metrics.quantity.browser_backup_cookies_size, metrics.quantity.browser_backup_form_history_size, metrics.quantity.browser_backup_misc_data_size, metrics.quantity.browser_backup_preferences_size, metrics.quantity.browser_backup_session_store_backups_directory_size, metrics.quantity.browser_backup_session_store_size, metrics.quantity.browser_backup_browser_extension_data_size, metrics.quantity.browser_backup_extension_store_permissions_data_size, metrics.quantity.browser_backup_extensions_json_size, metrics.quantity.browser_backup_extensions_storage_size, metrics.quantity.browser_backup_extensions_xpi_directory_size, metrics.quantity.browser_backup_storage_sync_size, metrics.quantity.cert_verifier_trust_obj_count, metrics.quantity.pkcs11_third_party_modules_loaded, metrics.quantity.sidebar_width, metrics.quantity.a11y_hcm_background, metrics.quantity.a11y_hcm_foreground, metrics.quantity.browser_startup_abouthome_cache_result, metrics.quantity.datasanitization_session_permission_exceptions, metrics.quantity.gfx_hdr_windows_display_colorspace_bitfield, metrics.quantity.networking_doh_heuristics_result, metrics.quantity.networking_https_rr_prefs_usage, metrics.quantity.pwmgr_potentially_breached_passwords, metrics.quantity.pictureinpicture_most_concurrent_players, metrics.quantity.places_pages_need_frecency_recalculation, metrics.quantity.places_previousday_visits, metrics.quantity.startup_seconds_since_last_os_restart, metrics.quantity.contentblocking_category, metrics.quantity.policies_count, metrics.quantity.startup_profile_count, metrics.quantity.security_global_privacy_control_enabled, metrics.quantity.security_https_only_mode_enabled, metrics.quantity.security_https_only_mode_enabled_pbm, metrics.quantity.browser_engagement_max_concurrent_tab_count, metrics.quantity.browser_engagement_max_concurrent_tab_pinned_count, metrics.quantity.browser_engagement_max_concurrent_vertical_tab_count, metrics.quantity.browser_engagement_max_concurrent_vertical_tab_pinned_count, metrics.quantity.browser_engagement_max_concurrent_window_count, metrics.quantity.networking_loading_certs_task, metrics.quantity.networking_nss_initialization, metrics.quantity.bounce_tracking_protection_mode, metrics.quantity.browser_engagement_session_time_excluding_suspend, metrics.quantity.browser_engagement_session_time_including_suspend, metrics.quantity.browser_engagement_unique_domains_count, metrics.quantity.browser_backup_location_on_device + ) AS `quantity` + , + STRUCT( + + ARRAY( + SELECT + STRUCT( + startup_run_from_dmg_install_outcome.key, startup_run_from_dmg_install_outcome.value + ) + FROM UNNEST(metrics.labeled_boolean.startup_run_from_dmg_install_outcome) AS `startup_run_from_dmg_install_outcome` + ) AS `startup_run_from_dmg_install_outcome` + , + ARRAY( + SELECT + STRUCT( + cookie_banners_normal_window_service_mode.key, cookie_banners_normal_window_service_mode.value + ) + FROM UNNEST(metrics.labeled_boolean.cookie_banners_normal_window_service_mode) AS `cookie_banners_normal_window_service_mode` + ) AS `cookie_banners_normal_window_service_mode` + , + ARRAY( + SELECT + STRUCT( + cookie_banners_private_window_service_mode.key, cookie_banners_private_window_service_mode.value + ) + FROM UNNEST(metrics.labeled_boolean.cookie_banners_private_window_service_mode) AS `cookie_banners_private_window_service_mode` + ) AS `cookie_banners_private_window_service_mode` + , + ARRAY( + SELECT + STRUCT( + data_storage_migration.key, data_storage_migration.value + ) + FROM UNNEST(metrics.labeled_boolean.data_storage_migration) AS `data_storage_migration` + ) AS `data_storage_migration` + , + ARRAY( + SELECT + STRUCT( + oskeystore_self_test.key, oskeystore_self_test.value + ) + FROM UNNEST(metrics.labeled_boolean.oskeystore_self_test) AS `oskeystore_self_test` + ) AS `oskeystore_self_test` + , + ARRAY( + SELECT + STRUCT( + media_playback_device_hardware_decoder_support.key, media_playback_device_hardware_decoder_support.value + ) + FROM UNNEST(metrics.labeled_boolean.media_playback_device_hardware_decoder_support) AS `media_playback_device_hardware_decoder_support` + ) AS `media_playback_device_hardware_decoder_support` + , + ARRAY( + SELECT + STRUCT( + geolocation_linux_provider.key, geolocation_linux_provider.value + ) + FROM UNNEST(metrics.labeled_boolean.geolocation_linux_provider) AS `geolocation_linux_provider` + ) AS `geolocation_linux_provider` + , + ARRAY( + SELECT + STRUCT( + pdfjs_image_alt_text_edit.key, pdfjs_image_alt_text_edit.value + ) + FROM UNNEST(metrics.labeled_boolean.pdfjs_image_alt_text_edit) AS `pdfjs_image_alt_text_edit` + ) AS `pdfjs_image_alt_text_edit` + , + ARRAY( + SELECT + STRUCT( + a11y_theme.key, a11y_theme.value + ) + FROM UNNEST(metrics.labeled_boolean.a11y_theme) AS `a11y_theme` + ) AS `a11y_theme` + , + ARRAY( + SELECT + STRUCT( + media_video_hardware_decoding_support.key, media_video_hardware_decoding_support.value + ) + FROM UNNEST(metrics.labeled_boolean.media_video_hardware_decoding_support) AS `media_video_hardware_decoding_support` + ) AS `media_video_hardware_decoding_support` + , + ARRAY( + SELECT + STRUCT( + media_video_hd_hardware_decoding_support.key, media_video_hd_hardware_decoding_support.value + ) + FROM UNNEST(metrics.labeled_boolean.media_video_hd_hardware_decoding_support) AS `media_video_hd_hardware_decoding_support` + ) AS `media_video_hd_hardware_decoding_support` + , + ARRAY( + SELECT + STRUCT( + networking_doh_heuristic_ever_tripped.key, networking_doh_heuristic_ever_tripped.value + ) + FROM UNNEST(metrics.labeled_boolean.networking_doh_heuristic_ever_tripped) AS `networking_doh_heuristic_ever_tripped` + ) AS `networking_doh_heuristic_ever_tripped` + , + ARRAY( + SELECT + STRUCT( + widget_ime_name_on_mac.key, widget_ime_name_on_mac.value + ) + FROM UNNEST(metrics.labeled_boolean.widget_ime_name_on_mac) AS `widget_ime_name_on_mac` + ) AS `widget_ime_name_on_mac` + , + ARRAY( + SELECT + STRUCT( + widget_ime_name_on_windows.key, widget_ime_name_on_windows.value + ) + FROM UNNEST(metrics.labeled_boolean.widget_ime_name_on_windows) AS `widget_ime_name_on_windows` + ) AS `widget_ime_name_on_windows` + , + ARRAY( + SELECT + STRUCT( + widget_ime_name_on_windows_inserted_crlf.key, widget_ime_name_on_windows_inserted_crlf.value + ) + FROM UNNEST(metrics.labeled_boolean.widget_ime_name_on_windows_inserted_crlf) AS `widget_ime_name_on_windows_inserted_crlf` + ) AS `widget_ime_name_on_windows_inserted_crlf` + , + ARRAY( + SELECT + STRUCT( + os_environment_is_default_handler.key, os_environment_is_default_handler.value + ) + FROM UNNEST(metrics.labeled_boolean.os_environment_is_default_handler) AS `os_environment_is_default_handler` + ) AS `os_environment_is_default_handler` + , + ARRAY( + SELECT + STRUCT( + widget_ime_name_on_linux.key, widget_ime_name_on_linux.value + ) + FROM UNNEST(metrics.labeled_boolean.widget_ime_name_on_linux) AS `widget_ime_name_on_linux` + ) AS `widget_ime_name_on_linux` + , + ARRAY( + SELECT + STRUCT( + browser_ui_mirror_for_toolbar_widgets.key, browser_ui_mirror_for_toolbar_widgets.value + ) + FROM UNNEST(metrics.labeled_boolean.browser_ui_mirror_for_toolbar_widgets) AS `browser_ui_mirror_for_toolbar_widgets` + ) AS `browser_ui_mirror_for_toolbar_widgets` + , + ARRAY( + SELECT + STRUCT( + widget_pointing_devices.key, widget_pointing_devices.value + ) + FROM UNNEST(metrics.labeled_boolean.widget_pointing_devices) AS `widget_pointing_devices` + ) AS `widget_pointing_devices` + , CAST(NULL AS ARRAY>) AS `mediadrm_decryption` + ) AS `labeled_boolean` + , + STRUCT( + metrics.uuid.legacy_telemetry_client_id, metrics.uuid.legacy_telemetry_profile_group_id + ) AS `uuid` + , + STRUCT( + + STRUCT( + metrics.custom_distribution.power_battery_percentage_when_user_active.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.power_battery_percentage_when_user_active.values) AS `values` + ) AS `values` + , metrics.custom_distribution.power_battery_percentage_when_user_active.count + ) AS `power_battery_percentage_when_user_active` + , + STRUCT( + metrics.custom_distribution.pdfjs_time_to_view.count, metrics.custom_distribution.pdfjs_time_to_view.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.pdfjs_time_to_view.values) AS `values` + ) AS `values` + + ) AS `pdfjs_time_to_view` + , + STRUCT( + metrics.custom_distribution.timer_thread_timers_fired_per_wakeup.count, metrics.custom_distribution.timer_thread_timers_fired_per_wakeup.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.timer_thread_timers_fired_per_wakeup.values) AS `values` + ) AS `values` + + ) AS `timer_thread_timers_fired_per_wakeup` + , + STRUCT( + metrics.custom_distribution.networking_cookie_access_fixup_diff.count, metrics.custom_distribution.networking_cookie_access_fixup_diff.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_cookie_access_fixup_diff.values) AS `values` + ) AS `values` + + ) AS `networking_cookie_access_fixup_diff` + , + STRUCT( + metrics.custom_distribution.networking_cookie_creation_fixup_diff.count, metrics.custom_distribution.networking_cookie_creation_fixup_diff.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_cookie_creation_fixup_diff.values) AS `values` + ) AS `values` + + ) AS `networking_cookie_creation_fixup_diff` + , + STRUCT( + metrics.custom_distribution.networking_http_1_download_throughput.count, metrics.custom_distribution.networking_http_1_download_throughput.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_1_download_throughput.values) AS `values` + ) AS `values` + + ) AS `networking_http_1_download_throughput` + , + STRUCT( + metrics.custom_distribution.networking_http_2_download_throughput.count, metrics.custom_distribution.networking_http_2_download_throughput.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_2_download_throughput.values) AS `values` + ) AS `values` + + ) AS `networking_http_2_download_throughput` + , + STRUCT( + metrics.custom_distribution.networking_http_3_download_throughput.count, metrics.custom_distribution.networking_http_3_download_throughput.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_3_download_throughput.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_download_throughput` + , + STRUCT( + metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_frame.count, metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_frame.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_frame.values) AS `values` + ) AS `values` + + ) AS `cookie_banners_click_query_selector_run_count_per_window_frame` + , + STRUCT( + metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_top_level.count, metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_top_level.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.cookie_banners_click_query_selector_run_count_per_window_top_level.values) AS `values` + ) AS `values` + + ) AS `cookie_banners_click_query_selector_run_count_per_window_top_level` + , + STRUCT( + metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_frame.count, metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_frame.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_frame.values) AS `values` + ) AS `values` + + ) AS `cookie_banners_click_query_selector_run_duration_per_window_frame` + , + STRUCT( + metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_top_level.count, metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_top_level.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.cookie_banners_click_query_selector_run_duration_per_window_top_level.values) AS `values` + ) AS `values` + + ) AS `cookie_banners_click_query_selector_run_duration_per_window_top_level` + , + STRUCT( + metrics.custom_distribution.networking_http_1_upload_throughput.count, metrics.custom_distribution.networking_http_1_upload_throughput.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_1_upload_throughput.values) AS `values` + ) AS `values` + + ) AS `networking_http_1_upload_throughput` + , + STRUCT( + metrics.custom_distribution.networking_http_2_upload_throughput.count, metrics.custom_distribution.networking_http_2_upload_throughput.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_2_upload_throughput.values) AS `values` + ) AS `values` + + ) AS `networking_http_2_upload_throughput` + , + STRUCT( + metrics.custom_distribution.networking_http_3_upload_throughput.count, metrics.custom_distribution.networking_http_3_upload_throughput.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_3_upload_throughput.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_upload_throughput` + , + STRUCT( + metrics.custom_distribution.fog_validation_gvsv_number_of_unique_site_origins_all_tabs.count, metrics.custom_distribution.fog_validation_gvsv_number_of_unique_site_origins_all_tabs.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.fog_validation_gvsv_number_of_unique_site_origins_all_tabs.values) AS `values` + ) AS `values` + + ) AS `fog_validation_gvsv_number_of_unique_site_origins_all_tabs` + , + STRUCT( + metrics.custom_distribution.extensions_timing_event_page_running_time.count, metrics.custom_distribution.extensions_timing_event_page_running_time.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.extensions_timing_event_page_running_time.values) AS `values` + ) AS `values` + + ) AS `extensions_timing_event_page_running_time` + , + STRUCT( + metrics.custom_distribution.networking_cookie_count_part_by_key.count, metrics.custom_distribution.networking_cookie_count_part_by_key.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_cookie_count_part_by_key.values) AS `values` + ) AS `values` + + ) AS `networking_cookie_count_part_by_key` + , + STRUCT( + metrics.custom_distribution.networking_cookie_count_partitioned.count, metrics.custom_distribution.networking_cookie_count_partitioned.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_cookie_count_partitioned.values) AS `values` + ) AS `values` + + ) AS `networking_cookie_count_partitioned` + , + STRUCT( + metrics.custom_distribution.networking_cookie_count_total.count, metrics.custom_distribution.networking_cookie_count_total.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_cookie_count_total.values) AS `values` + ) AS `values` + + ) AS `networking_cookie_count_total` + , + STRUCT( + metrics.custom_distribution.networking_cookie_count_unpart_by_key.count, metrics.custom_distribution.networking_cookie_count_unpart_by_key.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_cookie_count_unpart_by_key.values) AS `values` + ) AS `values` + + ) AS `networking_cookie_count_unpart_by_key` + , + STRUCT( + metrics.custom_distribution.networking_cookie_count_unpartitioned.count, metrics.custom_distribution.networking_cookie_count_unpartitioned.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_cookie_count_unpartitioned.values) AS `values` + ) AS `values` + + ) AS `networking_cookie_count_unpartitioned` + , + STRUCT( + metrics.custom_distribution.networking_cookie_purge_entry_max.count, metrics.custom_distribution.networking_cookie_purge_entry_max.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_cookie_purge_entry_max.values) AS `values` + ) AS `values` + + ) AS `networking_cookie_purge_entry_max` + , + STRUCT( + metrics.custom_distribution.networking_cookie_purge_max.count, metrics.custom_distribution.networking_cookie_purge_max.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_cookie_purge_max.values) AS `values` + ) AS `values` + + ) AS `networking_cookie_purge_max` + , + STRUCT( + metrics.custom_distribution.networking_http_1_upload_throughput_100.count, metrics.custom_distribution.networking_http_1_upload_throughput_100.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_1_upload_throughput_100.values) AS `values` + ) AS `values` + + ) AS `networking_http_1_upload_throughput_100` + , + STRUCT( + metrics.custom_distribution.networking_http_1_upload_throughput_10_50.count, metrics.custom_distribution.networking_http_1_upload_throughput_10_50.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_1_upload_throughput_10_50.values) AS `values` + ) AS `values` + + ) AS `networking_http_1_upload_throughput_10_50` + , + STRUCT( + metrics.custom_distribution.networking_http_1_upload_throughput_50_100.count, metrics.custom_distribution.networking_http_1_upload_throughput_50_100.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_1_upload_throughput_50_100.values) AS `values` + ) AS `values` + + ) AS `networking_http_1_upload_throughput_50_100` + , + STRUCT( + metrics.custom_distribution.networking_http_2_upload_throughput_100.count, metrics.custom_distribution.networking_http_2_upload_throughput_100.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_2_upload_throughput_100.values) AS `values` + ) AS `values` + + ) AS `networking_http_2_upload_throughput_100` + , + STRUCT( + metrics.custom_distribution.networking_http_2_upload_throughput_10_50.count, metrics.custom_distribution.networking_http_2_upload_throughput_10_50.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_2_upload_throughput_10_50.values) AS `values` + ) AS `values` + + ) AS `networking_http_2_upload_throughput_10_50` + , + STRUCT( + metrics.custom_distribution.networking_http_2_upload_throughput_50_100.count, metrics.custom_distribution.networking_http_2_upload_throughput_50_100.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_2_upload_throughput_50_100.values) AS `values` + ) AS `values` + + ) AS `networking_http_2_upload_throughput_50_100` + , + STRUCT( + metrics.custom_distribution.networking_http_3_upload_throughput_100.count, metrics.custom_distribution.networking_http_3_upload_throughput_100.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_3_upload_throughput_100.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_upload_throughput_100` + , + STRUCT( + metrics.custom_distribution.networking_http_3_upload_throughput_10_50.count, metrics.custom_distribution.networking_http_3_upload_throughput_10_50.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_3_upload_throughput_10_50.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_upload_throughput_10_50` + , + STRUCT( + metrics.custom_distribution.networking_http_3_upload_throughput_50_100.count, metrics.custom_distribution.networking_http_3_upload_throughput_50_100.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_3_upload_throughput_50_100.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_upload_throughput_50_100` + , + STRUCT( + metrics.custom_distribution.gfx_checkerboard_peak_pixel_count.count, metrics.custom_distribution.gfx_checkerboard_peak_pixel_count.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.gfx_checkerboard_peak_pixel_count.values) AS `values` + ) AS `values` + + ) AS `gfx_checkerboard_peak_pixel_count` + , + STRUCT( + metrics.custom_distribution.gfx_checkerboard_severity.count, metrics.custom_distribution.gfx_checkerboard_severity.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.gfx_checkerboard_severity.values) AS `values` + ) AS `values` + + ) AS `gfx_checkerboard_severity` + , + STRUCT( + metrics.custom_distribution.gfx_content_frame_time_from_paint.count, metrics.custom_distribution.gfx_content_frame_time_from_paint.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.gfx_content_frame_time_from_paint.values) AS `values` + ) AS `values` + + ) AS `gfx_content_frame_time_from_paint` + , + STRUCT( + metrics.custom_distribution.gfx_content_frame_time_from_vsync.count, metrics.custom_distribution.gfx_content_frame_time_from_vsync.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.gfx_content_frame_time_from_vsync.values) AS `values` + ) AS `values` + + ) AS `gfx_content_frame_time_from_vsync` + , + STRUCT( + metrics.custom_distribution.gfx_content_frame_time_with_svg.count, metrics.custom_distribution.gfx_content_frame_time_with_svg.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.gfx_content_frame_time_with_svg.values) AS `values` + ) AS `values` + + ) AS `gfx_content_frame_time_with_svg` + , + STRUCT( + metrics.custom_distribution.gfx_content_frame_time_without_resource_upload.count, metrics.custom_distribution.gfx_content_frame_time_without_resource_upload.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.gfx_content_frame_time_without_resource_upload.values) AS `values` + ) AS `values` + + ) AS `gfx_content_frame_time_without_resource_upload` + , + STRUCT( + metrics.custom_distribution.gfx_content_frame_time_without_upload.count, metrics.custom_distribution.gfx_content_frame_time_without_upload.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.gfx_content_frame_time_without_upload.values) AS `values` + ) AS `values` + + ) AS `gfx_content_frame_time_without_upload` + , + STRUCT( + metrics.custom_distribution.geckoview_document_site_origins.count, metrics.custom_distribution.geckoview_document_site_origins.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.geckoview_document_site_origins.values) AS `values` + ) AS `values` + + ) AS `geckoview_document_site_origins` + , + STRUCT( + metrics.custom_distribution.geckoview_per_document_site_origins.count, metrics.custom_distribution.geckoview_per_document_site_origins.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.geckoview_per_document_site_origins.values) AS `values` + ) AS `values` + + ) AS `geckoview_per_document_site_origins` + , + STRUCT( + metrics.custom_distribution.performance_clone_deserialize_items.count, metrics.custom_distribution.performance_clone_deserialize_items.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.performance_clone_deserialize_items.values) AS `values` + ) AS `values` + + ) AS `performance_clone_deserialize_items` + , + STRUCT( + metrics.custom_distribution.pdfjs_editing_highlight_thickness.count, metrics.custom_distribution.pdfjs_editing_highlight_thickness.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.pdfjs_editing_highlight_thickness.values) AS `values` + ) AS `values` + + ) AS `pdfjs_editing_highlight_thickness` + , + STRUCT( + metrics.custom_distribution.network_tls_early_data_bytes_written.count, metrics.custom_distribution.network_tls_early_data_bytes_written.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.network_tls_early_data_bytes_written.values) AS `values` + ) AS `values` + + ) AS `network_tls_early_data_bytes_written` + , + STRUCT( + metrics.custom_distribution.cert_compression_brotli_saved_bytes.count, metrics.custom_distribution.cert_compression_brotli_saved_bytes.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.cert_compression_brotli_saved_bytes.values) AS `values` + ) AS `values` + + ) AS `cert_compression_brotli_saved_bytes` + , + STRUCT( + metrics.custom_distribution.cert_compression_zlib_saved_bytes.count, metrics.custom_distribution.cert_compression_zlib_saved_bytes.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.cert_compression_zlib_saved_bytes.values) AS `values` + ) AS `values` + + ) AS `cert_compression_zlib_saved_bytes` + , + STRUCT( + metrics.custom_distribution.bounce_tracking_protection_num_hosts_per_purge_run.count, metrics.custom_distribution.bounce_tracking_protection_num_hosts_per_purge_run.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.bounce_tracking_protection_num_hosts_per_purge_run.values) AS `values` + ) AS `values` + + ) AS `bounce_tracking_protection_num_hosts_per_purge_run` + , + STRUCT( + metrics.custom_distribution.cert_compression_zstd_saved_bytes.count, metrics.custom_distribution.cert_compression_zstd_saved_bytes.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.cert_compression_zstd_saved_bytes.values) AS `values` + ) AS `values` + + ) AS `cert_compression_zstd_saved_bytes` + , + STRUCT( + metrics.custom_distribution.networking_cookie_chips_partition_limit_overflow.count, metrics.custom_distribution.networking_cookie_chips_partition_limit_overflow.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_cookie_chips_partition_limit_overflow.values) AS `values` + ) AS `values` + + ) AS `networking_cookie_chips_partition_limit_overflow` + , + STRUCT( + metrics.custom_distribution.geolocation_accuracy.count, metrics.custom_distribution.geolocation_accuracy.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.geolocation_accuracy.values) AS `values` + ) AS `values` + + ) AS `geolocation_accuracy` + , + STRUCT( + metrics.custom_distribution.networking_http_3_download_throughput_100.count, metrics.custom_distribution.networking_http_3_download_throughput_100.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_3_download_throughput_100.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_download_throughput_100` + , + STRUCT( + metrics.custom_distribution.networking_http_3_download_throughput_10_50.count, metrics.custom_distribution.networking_http_3_download_throughput_10_50.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_3_download_throughput_10_50.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_download_throughput_10_50` + , + STRUCT( + metrics.custom_distribution.networking_http_3_download_throughput_50_100.count, metrics.custom_distribution.networking_http_3_download_throughput_50_100.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_3_download_throughput_50_100.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_download_throughput_50_100` + , + STRUCT( + metrics.custom_distribution.networking_http_3_udp_datagram_segments_received.count, metrics.custom_distribution.networking_http_3_udp_datagram_segments_received.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_3_udp_datagram_segments_received.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_udp_datagram_segments_received` + , + STRUCT( + metrics.custom_distribution.networking_http_3_loss_ratio.count, metrics.custom_distribution.networking_http_3_loss_ratio.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_3_loss_ratio.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_loss_ratio` + , + STRUCT( + metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_received.count, metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_received.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_received.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_ecn_ce_ect0_ratio_received` + , + STRUCT( + metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_sent.count, metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_sent.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(metrics.custom_distribution.networking_http_3_ecn_ce_ect0_ratio_sent.values) AS `values` + ) AS `values` + + ) AS `networking_http_3_ecn_ce_ect0_ratio_sent` + + ) AS `custom_distribution` + , + STRUCT( + metrics.url2.search_engine_default_submission_url, metrics.url2.search_engine_private_submission_url + ) AS `url2` + , + STRUCT( + + STRUCT( + metrics.rate.rtcrtpsender_setparameters_fail_length_changed.denominator, metrics.rate.rtcrtpsender_setparameters_fail_length_changed.numerator + ) AS `rtcrtpsender_setparameters_fail_length_changed` + , + STRUCT( + metrics.rate.rtcrtpsender_setparameters_fail_no_encodings.denominator, metrics.rate.rtcrtpsender_setparameters_fail_no_encodings.numerator + ) AS `rtcrtpsender_setparameters_fail_no_encodings` + , + STRUCT( + metrics.rate.rtcrtpsender_setparameters_fail_no_getparameters.denominator, metrics.rate.rtcrtpsender_setparameters_fail_no_getparameters.numerator + ) AS `rtcrtpsender_setparameters_fail_no_getparameters` + , + STRUCT( + metrics.rate.rtcrtpsender_setparameters_fail_no_transactionid.denominator, metrics.rate.rtcrtpsender_setparameters_fail_no_transactionid.numerator + ) AS `rtcrtpsender_setparameters_fail_no_transactionid` + , + STRUCT( + metrics.rate.rtcrtpsender_setparameters_fail_other.denominator, metrics.rate.rtcrtpsender_setparameters_fail_other.numerator + ) AS `rtcrtpsender_setparameters_fail_other` + , + STRUCT( + metrics.rate.rtcrtpsender_setparameters_fail_rid_changed.denominator, metrics.rate.rtcrtpsender_setparameters_fail_rid_changed.numerator + ) AS `rtcrtpsender_setparameters_fail_rid_changed` + , + STRUCT( + metrics.rate.rtcrtpsender_setparameters_fail_stale_transactionid.denominator, metrics.rate.rtcrtpsender_setparameters_fail_stale_transactionid.numerator + ) AS `rtcrtpsender_setparameters_fail_stale_transactionid` + , + STRUCT( + metrics.rate.rtcrtpsender_setparameters_warn_length_changed.denominator, metrics.rate.rtcrtpsender_setparameters_warn_length_changed.numerator + ) AS `rtcrtpsender_setparameters_warn_length_changed` + , + STRUCT( + metrics.rate.rtcrtpsender_setparameters_warn_no_getparameters.denominator, metrics.rate.rtcrtpsender_setparameters_warn_no_getparameters.numerator + ) AS `rtcrtpsender_setparameters_warn_no_getparameters` + , + STRUCT( + metrics.rate.rtcrtpsender_setparameters_warn_no_transactionid.denominator, metrics.rate.rtcrtpsender_setparameters_warn_no_transactionid.numerator + ) AS `rtcrtpsender_setparameters_warn_no_transactionid` + , + STRUCT( + metrics.rate.rtcrtpsender_setparameters_warn_rid_changed.denominator, metrics.rate.rtcrtpsender_setparameters_warn_rid_changed.numerator + ) AS `rtcrtpsender_setparameters_warn_rid_changed` + , + STRUCT( + metrics.rate.rtcrtpsender_setparameters_warn_stale_transactionid.denominator, metrics.rate.rtcrtpsender_setparameters_warn_stale_transactionid.numerator + ) AS `rtcrtpsender_setparameters_warn_stale_transactionid` + , + STRUCT( + metrics.rate.rtcrtpsender_used_sendencodings.denominator, metrics.rate.rtcrtpsender_used_sendencodings.numerator + ) AS `rtcrtpsender_used_sendencodings` + , + STRUCT( + metrics.rate.translations_error_rate.denominator, metrics.rate.translations_error_rate.numerator + ) AS `translations_error_rate` + , + STRUCT( + metrics.rate.cookie_banners_cmp_ratio_handled_by_cmp_rule.denominator, metrics.rate.cookie_banners_cmp_ratio_handled_by_cmp_rule.numerator + ) AS `cookie_banners_cmp_ratio_handled_by_cmp_rule` + , + STRUCT( + metrics.rate.networking_set_cookie_foreign.denominator, metrics.rate.networking_set_cookie_foreign.numerator + ) AS `networking_set_cookie_foreign` + , + STRUCT( + metrics.rate.networking_set_cookie_foreign_partitioned.denominator, metrics.rate.networking_set_cookie_foreign_partitioned.numerator + ) AS `networking_set_cookie_foreign_partitioned` + , + STRUCT( + metrics.rate.networking_set_cookie_partitioned.denominator, metrics.rate.networking_set_cookie_partitioned.numerator + ) AS `networking_set_cookie_partitioned` + , + STRUCT( + metrics.rate.verification_used_cert_from_built_in_roots_module.denominator, metrics.rate.verification_used_cert_from_built_in_roots_module.numerator + ) AS `verification_used_cert_from_built_in_roots_module` + , + STRUCT( + metrics.rate.verification_used_cert_from_nss_cert_db.denominator, metrics.rate.verification_used_cert_from_nss_cert_db.numerator + ) AS `verification_used_cert_from_nss_cert_db` + , + STRUCT( + metrics.rate.verification_used_cert_from_preloaded_intermediates.denominator, metrics.rate.verification_used_cert_from_preloaded_intermediates.numerator + ) AS `verification_used_cert_from_preloaded_intermediates` + , + STRUCT( + metrics.rate.verification_used_cert_from_third_party_certificates.denominator, metrics.rate.verification_used_cert_from_third_party_certificates.numerator + ) AS `verification_used_cert_from_third_party_certificates` + , + STRUCT( + metrics.rate.verification_used_cert_from_tls_handshake.denominator, metrics.rate.verification_used_cert_from_tls_handshake.numerator + ) AS `verification_used_cert_from_tls_handshake` + , + STRUCT( + metrics.rate.httpsfirst_downgraded_on_timer.denominator, metrics.rate.httpsfirst_downgraded_on_timer.numerator + ) AS `httpsfirst_downgraded_on_timer` + , + STRUCT( + metrics.rate.httpsfirst_downgraded_on_timer_schemeless.denominator, metrics.rate.httpsfirst_downgraded_on_timer_schemeless.numerator + ) AS `httpsfirst_downgraded_on_timer_schemeless` + , + STRUCT( + metrics.rate.private_browsing_window_open_during_teardown.denominator, metrics.rate.private_browsing_window_open_during_teardown.numerator + ) AS `private_browsing_window_open_during_teardown` + , + STRUCT( + metrics.rate.pkcs11_built_in_roots_module.denominator, metrics.rate.pkcs11_built_in_roots_module.numerator + ) AS `pkcs11_built_in_roots_module` + , + STRUCT( + metrics.rate.pkcs11_nss_cert_db.denominator, metrics.rate.pkcs11_nss_cert_db.numerator + ) AS `pkcs11_nss_cert_db` + , + STRUCT( + metrics.rate.networking_set_cookie_expired_without_server_time.denominator, metrics.rate.networking_set_cookie_expired_without_server_time.numerator + ) AS `networking_set_cookie_expired_without_server_time` + , + STRUCT( + metrics.rate.parsing_svg_unusual_pcdata.denominator, metrics.rate.parsing_svg_unusual_pcdata.numerator + ) AS `parsing_svg_unusual_pcdata` + , + STRUCT( + metrics.rate.cert_signature_cache_hits.denominator, metrics.rate.cert_signature_cache_hits.numerator + ) AS `cert_signature_cache_hits` + , + STRUCT( + metrics.rate.sct_signature_cache_hits.denominator, metrics.rate.sct_signature_cache_hits.numerator + ) AS `sct_signature_cache_hits` + , + STRUCT( + metrics.rate.cert_trust_cache_hits.denominator, metrics.rate.cert_trust_cache_hits.numerator + ) AS `cert_trust_cache_hits` + + ) AS `rate` + , + STRUCT( + metrics.string_list.background_update_reasons_to_not_update, metrics.string_list.browser_migration_matched_extensions, metrics.string_list.browser_migration_unmatched_extensions + ) AS `string_list` + , + STRUCT( + metrics.object.fog_validation_some_object, metrics.object.browser_ui_toolbar_widgets + ) AS `object` + , + STRUCT( + + ARRAY( + SELECT + STRUCT( + cookie_banners_google_gdpr_choice_cookie.key, cookie_banners_google_gdpr_choice_cookie.value + ) + FROM UNNEST(metrics.labeled_string.cookie_banners_google_gdpr_choice_cookie) AS `cookie_banners_google_gdpr_choice_cookie` + ) AS `cookie_banners_google_gdpr_choice_cookie` + , + ARRAY( + SELECT + STRUCT( + places_places_database_corruption_handling_stage.key, places_places_database_corruption_handling_stage.value + ) + FROM UNNEST(metrics.labeled_string.places_places_database_corruption_handling_stage) AS `places_places_database_corruption_handling_stage` + ) AS `places_places_database_corruption_handling_stage` + + ) AS `labeled_string` + , + STRUCT( + + ARRAY( + SELECT + STRUCT( + network_http3_complete_load.key, + STRUCT( + network_http3_complete_load.value.bucket_count, network_http3_complete_load.value.count, network_http3_complete_load.value.histogram_type, network_http3_complete_load.value.overflow, network_http3_complete_load.value.range, network_http3_complete_load.value.sum, network_http3_complete_load.value.time_unit, network_http3_complete_load.value.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(network_http3_complete_load.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_timing_distribution.network_http3_complete_load) AS `network_http3_complete_load` + ) AS `network_http3_complete_load` + , + ARRAY( + SELECT + STRUCT( + network_http3_first_sent_to_last_received.key, + STRUCT( + network_http3_first_sent_to_last_received.value.bucket_count, network_http3_first_sent_to_last_received.value.count, network_http3_first_sent_to_last_received.value.histogram_type, network_http3_first_sent_to_last_received.value.overflow, network_http3_first_sent_to_last_received.value.range, network_http3_first_sent_to_last_received.value.sum, network_http3_first_sent_to_last_received.value.time_unit, network_http3_first_sent_to_last_received.value.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(network_http3_first_sent_to_last_received.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_timing_distribution.network_http3_first_sent_to_last_received) AS `network_http3_first_sent_to_last_received` + ) AS `network_http3_first_sent_to_last_received` + , + ARRAY( + SELECT + STRUCT( + network_http3_open_to_first_received.key, + STRUCT( + network_http3_open_to_first_received.value.bucket_count, network_http3_open_to_first_received.value.count, network_http3_open_to_first_received.value.histogram_type, network_http3_open_to_first_received.value.overflow, network_http3_open_to_first_received.value.range, network_http3_open_to_first_received.value.sum, network_http3_open_to_first_received.value.time_unit, network_http3_open_to_first_received.value.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(network_http3_open_to_first_received.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_timing_distribution.network_http3_open_to_first_received) AS `network_http3_open_to_first_received` + ) AS `network_http3_open_to_first_received` + , + ARRAY( + SELECT + STRUCT( + network_http3_open_to_first_sent.key, + STRUCT( + network_http3_open_to_first_sent.value.bucket_count, network_http3_open_to_first_sent.value.count, network_http3_open_to_first_sent.value.histogram_type, network_http3_open_to_first_sent.value.overflow, network_http3_open_to_first_sent.value.range, network_http3_open_to_first_sent.value.sum, network_http3_open_to_first_sent.value.time_unit, network_http3_open_to_first_sent.value.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(network_http3_open_to_first_sent.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_timing_distribution.network_http3_open_to_first_sent) AS `network_http3_open_to_first_sent` + ) AS `network_http3_open_to_first_sent` + , + ARRAY( + SELECT + STRUCT( + network_http3_tls_handshake.key, + STRUCT( + network_http3_tls_handshake.value.bucket_count, network_http3_tls_handshake.value.count, network_http3_tls_handshake.value.histogram_type, network_http3_tls_handshake.value.overflow, network_http3_tls_handshake.value.range, network_http3_tls_handshake.value.sum, network_http3_tls_handshake.value.time_unit, network_http3_tls_handshake.value.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(network_http3_tls_handshake.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_timing_distribution.network_http3_tls_handshake) AS `network_http3_tls_handshake` + ) AS `network_http3_tls_handshake` + , + ARRAY( + SELECT + STRUCT( + network_sup_http3_tcp_connection.key, + STRUCT( + network_sup_http3_tcp_connection.value.bucket_count, network_sup_http3_tcp_connection.value.count, network_sup_http3_tcp_connection.value.histogram_type, network_sup_http3_tcp_connection.value.overflow, network_sup_http3_tcp_connection.value.range, network_sup_http3_tcp_connection.value.sum, network_sup_http3_tcp_connection.value.time_unit, network_sup_http3_tcp_connection.value.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(network_sup_http3_tcp_connection.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_timing_distribution.network_sup_http3_tcp_connection) AS `network_sup_http3_tcp_connection` + ) AS `network_sup_http3_tcp_connection` + , + ARRAY( + SELECT + STRUCT( + netwerk_http3_0rtt_state_duration.key, + STRUCT( + netwerk_http3_0rtt_state_duration.value.bucket_count, netwerk_http3_0rtt_state_duration.value.count, netwerk_http3_0rtt_state_duration.value.histogram_type, netwerk_http3_0rtt_state_duration.value.overflow, netwerk_http3_0rtt_state_duration.value.range, netwerk_http3_0rtt_state_duration.value.sum, netwerk_http3_0rtt_state_duration.value.time_unit, netwerk_http3_0rtt_state_duration.value.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(netwerk_http3_0rtt_state_duration.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_timing_distribution.netwerk_http3_0rtt_state_duration) AS `netwerk_http3_0rtt_state_duration` + ) AS `netwerk_http3_0rtt_state_duration` + , + ARRAY( + SELECT + STRUCT( + suggest_ingest_download_time.key, + STRUCT( + suggest_ingest_download_time.value.bucket_count, suggest_ingest_download_time.value.count, suggest_ingest_download_time.value.histogram_type, suggest_ingest_download_time.value.overflow, suggest_ingest_download_time.value.range, suggest_ingest_download_time.value.sum, suggest_ingest_download_time.value.time_unit, suggest_ingest_download_time.value.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(suggest_ingest_download_time.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_timing_distribution.suggest_ingest_download_time) AS `suggest_ingest_download_time` + ) AS `suggest_ingest_download_time` + , + ARRAY( + SELECT + STRUCT( + suggest_ingest_time.key, + STRUCT( + suggest_ingest_time.value.bucket_count, suggest_ingest_time.value.count, suggest_ingest_time.value.histogram_type, suggest_ingest_time.value.overflow, suggest_ingest_time.value.range, suggest_ingest_time.value.sum, suggest_ingest_time.value.time_unit, suggest_ingest_time.value.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(suggest_ingest_time.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_timing_distribution.suggest_ingest_time) AS `suggest_ingest_time` + ) AS `suggest_ingest_time` + , + ARRAY( + SELECT + STRUCT( + suggest_query_time.key, + STRUCT( + suggest_query_time.value.bucket_count, suggest_query_time.value.count, suggest_query_time.value.histogram_type, suggest_query_time.value.overflow, suggest_query_time.value.range, suggest_query_time.value.sum, suggest_query_time.value.time_unit, suggest_query_time.value.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(suggest_query_time.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_timing_distribution.suggest_query_time) AS `suggest_query_time` + ) AS `suggest_query_time` + , + ARRAY( + SELECT + STRUCT( + networking_trr_fetch_duration.key, + STRUCT( + networking_trr_fetch_duration.value.bucket_count, networking_trr_fetch_duration.value.count, networking_trr_fetch_duration.value.histogram_type, networking_trr_fetch_duration.value.overflow, networking_trr_fetch_duration.value.range, networking_trr_fetch_duration.value.sum, networking_trr_fetch_duration.value.time_unit, networking_trr_fetch_duration.value.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(networking_trr_fetch_duration.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_timing_distribution.networking_trr_fetch_duration) AS `networking_trr_fetch_duration` + ) AS `networking_trr_fetch_duration` + , + ARRAY( + SELECT + STRUCT( + netwerk_http3_time_to_reuse_idle_connection.key, + STRUCT( + netwerk_http3_time_to_reuse_idle_connection.value.bucket_count, netwerk_http3_time_to_reuse_idle_connection.value.count, netwerk_http3_time_to_reuse_idle_connection.value.histogram_type, netwerk_http3_time_to_reuse_idle_connection.value.overflow, netwerk_http3_time_to_reuse_idle_connection.value.range, netwerk_http3_time_to_reuse_idle_connection.value.sum, netwerk_http3_time_to_reuse_idle_connection.value.time_unit, netwerk_http3_time_to_reuse_idle_connection.value.underflow, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(netwerk_http3_time_to_reuse_idle_connection.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_timing_distribution.netwerk_http3_time_to_reuse_idle_connection) AS `netwerk_http3_time_to_reuse_idle_connection` + ) AS `netwerk_http3_time_to_reuse_idle_connection` + + ) AS `labeled_timing_distribution` + , + STRUCT( + + ARRAY( + SELECT + STRUCT( + networking_http_3_ecn_ce_ect0_ratio.key, + STRUCT( + networking_http_3_ecn_ce_ect0_ratio.value.count, networking_http_3_ecn_ce_ect0_ratio.value.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(networking_http_3_ecn_ce_ect0_ratio.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_custom_distribution.networking_http_3_ecn_ce_ect0_ratio) AS `networking_http_3_ecn_ce_ect0_ratio` + ) AS `networking_http_3_ecn_ce_ect0_ratio` + , + ARRAY( + SELECT + STRUCT( + quotamanager_initialize_repository_number_of_iterations.key, + STRUCT( + quotamanager_initialize_repository_number_of_iterations.value.count, quotamanager_initialize_repository_number_of_iterations.value.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(quotamanager_initialize_repository_number_of_iterations.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_custom_distribution.quotamanager_initialize_repository_number_of_iterations) AS `quotamanager_initialize_repository_number_of_iterations` + ) AS `quotamanager_initialize_repository_number_of_iterations` + , + ARRAY( + SELECT + STRUCT( + network_cache_hit_rate_per_cache_size.key, + STRUCT( + network_cache_hit_rate_per_cache_size.value.count, network_cache_hit_rate_per_cache_size.value.sum, + ARRAY( + SELECT + STRUCT( + values.key, values.value + ) + FROM UNNEST(network_cache_hit_rate_per_cache_size.value.values) AS `values` + ) AS `values` + + ) AS `value` + + ) + FROM UNNEST(metrics.labeled_custom_distribution.network_cache_hit_rate_per_cache_size) AS `network_cache_hit_rate_per_cache_size` + ) AS `network_cache_hit_rate_per_cache_size` + + ) AS `labeled_custom_distribution` + + ) AS `metrics` + , normalized_app_name, normalized_channel, normalized_country_code, normalized_os, normalized_os_version, + STRUCT( + ping_info.end_time, + ARRAY( + SELECT + STRUCT( + experiments.key, + STRUCT( + experiments.value.branch, + STRUCT( + experiments.value.extra.type, experiments.value.extra.enrollment_id + ) AS `extra` + + ) AS `value` + + ) + FROM UNNEST(ping_info.experiments) AS `experiments` + ) AS `experiments` + , ping_info.ping_type, ping_info.reason, ping_info.seq, ping_info.start_time + ) AS `ping_info` + , sample_id, submission_timestamp + FROM + `moz-fx-data-backfill-1.firefox_desktop_stable.metrics_v1` + WHERE + DATE(submission_timestamp) > "2024-10-01" + \ No newline at end of file diff --git a/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/insert_to_prod.py b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/insert_to_prod.py new file mode 100644 index 0000000..6bbca52 --- /dev/null +++ b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/insert_to_prod.py @@ -0,0 +1,131 @@ +""" +Create a insert SQL expression to merge the deduplicated data with the production stable tables. + +This script is needed as the order of columns doesn't match between production schema and backfill schemas. +It is necessary to explicitly select columns. +""" + +from typing import Optional, Iterable, List, Dict +import yaml + +def generate_compatible_select_expression( + source_schema, + target_schema +) -> str: + """Generate the select expression for the source schema based on the target schema.""" + + def _type_info(node): + """Determine the BigQuery type information from Schema object field.""" + dtype = node["type"] + if dtype == "RECORD": + dtype = ( + "STRUCT<" + + ", ".join( + f"`{field['name']}` {_type_info(field)}" + for field in node["fields"] + ) + + ">" + ) + elif dtype == "FLOAT": + dtype = "FLOAT64" + if node.get("mode") == "REPEATED": + return f"ARRAY<{dtype}>" + return dtype + + def recurse_fields( + _source_schema_nodes: List[Dict], + _target_schema_nodes: List[Dict], + path=None, + ) -> str: + if path is None: + path = [] + + select_expr = [] + source_schema_nodes = {n["name"]: n for n in _source_schema_nodes} + target_schema_nodes = {n["name"]: n for n in _target_schema_nodes} + + # iterate through fields + for node_name, node in target_schema_nodes.items(): + dtype = node["type"] + node_path = path + [node_name] + node_path_str = ".".join(node_path) + + if node_name in source_schema_nodes: # field exists in app schema + # field matches, can query as-is + if node["name"] == node_name and ( + # don't need to unnest scalar + dtype != "RECORD" + ): + select_expr.append(node_path_str) + elif ( + dtype == "RECORD" + ): # for nested fields, recursively generate select expression + if ( + node.get("mode", None) == "REPEATED" + ): # unnest repeated record + select_expr.append( + f""" + ARRAY( + SELECT + STRUCT( + {recurse_fields( + source_schema_nodes[node_name]['fields'], + node['fields'], + [node_name], + )} + ) + FROM UNNEST({node_path_str}) AS `{node_name}` + ) AS `{node_name}` + """ + ) + else: # select struct fields + select_expr.append( + f""" + STRUCT( + {recurse_fields( + source_schema_nodes[node_name]['fields'], + node['fields'], + node_path, + )} + ) AS `{node_name}` + """ + ) + else: # scalar value doesn't match, e.g. different types + select_expr.append( + f"CAST(NULL AS {_type_info(node)}) AS `{node_name}`" + ) + else: # field not found in source schema + select_expr.append( + f"CAST(NULL AS {_type_info(node)}) AS `{node_name}`" + ) + + return ", ".join(select_expr) + + return recurse_fields( + source_schema["fields"], + target_schema["fields"], + ) + +def main(): + with open("stable_metrics.yaml") as stream: + stable_schema = yaml.safe_load(stream) + + with open("backfill_metrics.yaml") as stream: + backfill_schema = yaml.safe_load(stream) + + select_expression = generate_compatible_select_expression(backfill_schema, stable_schema) + + with open("insert.sql", "w") as f: + insert_statement = f""" + INSERT INTO + `moz-fx-data-shared-prod.firefox_desktop_stable.metrics_v1` + {select_expression} + FROM + `moz-fx-data-backfill-1.firefox_desktop_stable.metrics_v1` + WHERE + DATE(submission_timestamp) > "2024-10-01" + """ + f.write(insert_statement) + +if __name__ == "__main__": + main() diff --git a/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/mirror-prod-tables.sh b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/mirror-prod-tables.sh index 4989367..ab86408 100755 --- a/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/mirror-prod-tables.sh +++ b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/mirror-prod-tables.sh @@ -7,7 +7,7 @@ PROJECT=moz-fx-data-backfill-1 # Create staging datasets and tables, copying schemas from stable tables # telemetry_os_distro_output is for the dataflow output, telemetry_os_distro_deduped is the deduped output -src_table=moz-fx-data-shared-prod:firefox_desktop_stable.metrics_v1 +src_table=moz-fx-data-backfill-1:firefox_desktop_stable.metrics_v1 output_dataset=firefox_desktop_metrics_output deduped_dataset=firefox_desktop_metrics_deduped @@ -18,18 +18,5 @@ bq show --format=json $src_table | jq '.schema.fields' > table.json bq mk -t \ --time_partitioning_field=submission_timestamp \ --clustering_fields=normalized_channel,sample_id \ - --table "$PROJECT:$output_dataset.$table" \ - table.json - -# Create an error table for dataflow - -pbr_dataset=payload_bytes_error_firefox_desktop_metrics - -bq mk $PROJECT:$pbr_dataset - -bq show --format=json "moz-fx-data-shared-prod:payload_bytes_error.structured" | jq '.schema.fields' > table.json -bq mk -t \ - --time_partitioning_field=submission_timestamp \ - --clustering_fields=submission_timestamp \ - --table "$PROJECT:$pbr_dataset.structured" \ + --table "$PROJECT:$output_dataset.metrics_v1" \ table.json diff --git a/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/stable_metrics.yaml b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/stable_metrics.yaml new file mode 100644 index 0000000..4d7c4ff --- /dev/null +++ b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/stable_metrics.yaml @@ -0,0 +1,16189 @@ +fields: +- description: A JSON string containing any payload properties not present in the schema + mode: NULLABLE + name: additional_properties + type: STRING +- fields: + - description: The optional Android specific SDK version of the software running on this hardware device. + mode: NULLABLE + name: android_sdk_version + type: STRING + - description: The build identifier generated by the CI system (e.g. "1234/A"). For language bindings that provide automatic detection for this value, (e.g. Android/Kotlin), in the unlikely event that the build identifier can not be retrieved from the OS, it is set to "inaccessible". For other language bindings, if the value was not provided through configuration, this metric gets set to `Unknown`. + mode: NULLABLE + name: app_build + type: STRING + - description: The channel the application is being distributed on. + mode: NULLABLE + name: app_channel + type: STRING + - description: The user visible version string (e.g. "1.0.3"). In the unlikely event that the display version can not be retrieved, it is set to "inaccessible". + mode: NULLABLE + name: app_display_version + type: STRING + - description: The architecture of the device, (e.g. "arm", "x86"). + mode: NULLABLE + name: architecture + type: STRING + - description: A UUID uniquely identifying the client. + mode: NULLABLE + name: client_id + type: STRING + - description: The manufacturer of the device the application is running on. Not set if the device manufacturer can't be determined (e.g. on Desktop). + mode: NULLABLE + name: device_manufacturer + type: STRING + - description: The model of the device the application is running on. On Android, this is Build.MODEL, the user-visible marketing name, like "Pixel 2 XL". Not set if the device model can't be determined (e.g. on Desktop). + mode: NULLABLE + name: device_model + type: STRING + - description: The date of the first run of the application. + mode: NULLABLE + name: first_run_date + type: STRING + - description: The locale of the application during initialization (e.g. "es-ES"). If the locale can't be determined on the system, the value is ["und"](https://unicode.org/reports/tr35/#Unknown_or_Invalid_Identifiers), to indicate "undetermined". + mode: NULLABLE + name: locale + type: STRING + - description: 'The name of the operating system. Possible values: Android, iOS, Linux, Darwin, Windows, FreeBSD, NetBSD, OpenBSD, Solaris, unknown' + mode: NULLABLE + name: os + type: STRING + - description: The user-visible version of the operating system (e.g. "1.2.3"). If the version detection fails, this metric gets set to `Unknown`. + mode: NULLABLE + name: os_version + type: STRING + - description: The version of the Glean SDK + mode: NULLABLE + name: telemetry_sdk_build + type: STRING + - description: The date & time the application was built + mode: NULLABLE + name: build_date + type: STRING + - description: The optional Windows build number, reported by Windows (e.g. 22000) and not set for other platforms + mode: NULLABLE + name: windows_build_number + type: INTEGER + - description: An optional running counter of the number of sessions for a client. + mode: NULLABLE + name: session_count + type: INTEGER + - description: An optional UUID uniquely identifying the client's current session. + mode: NULLABLE + name: session_id + type: STRING + mode: NULLABLE + name: client_info + type: RECORD +- description: The document ID specified in the URI when the client sent this message + mode: NULLABLE + name: document_id + type: STRING +- fields: + - mode: NULLABLE + name: category + type: STRING + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: STRING + mode: REPEATED + name: extra + type: RECORD + - mode: NULLABLE + name: name + type: STRING + - mode: NULLABLE + name: timestamp + type: INTEGER + mode: REPEATED + name: events + type: RECORD +- fields: + - description: Results of a geographic lookup based on the client's IP address + fields: + - mode: NULLABLE + name: city + type: STRING + - description: An ISO 3166-1 alpha-2 country code + mode: NULLABLE + name: country + type: STRING + - description: The specific geo database version used for this lookup + mode: NULLABLE + name: db_version + type: STRING + - description: First major country subdivision, typically a state, province, or county + mode: NULLABLE + name: subdivision1 + type: STRING + - description: Second major country subdivision; not applicable for most countries + mode: NULLABLE + name: subdivision2 + type: STRING + mode: NULLABLE + name: geo + type: RECORD + - description: Headers included in the client's HTTP request + fields: + - description: Date HTTP header + mode: NULLABLE + name: date + type: STRING + - description: DNT (Do Not Track) HTTP header + mode: NULLABLE + name: dnt + type: STRING + - description: X-Debug-Id HTTP header + mode: NULLABLE + name: x_debug_id + type: STRING + - description: X-PingSender-Version HTTP header + mode: NULLABLE + name: x_pingsender_version + type: STRING + - description: X-Source-Tags HTTP header + mode: NULLABLE + name: x_source_tags + type: STRING + - description: X-Telemetry-Agent HTTP header + mode: NULLABLE + name: x_telemetry_agent + type: STRING + - description: X-Foxsec-IP-Reputation header + mode: NULLABLE + name: x_foxsec_ip_reputation + type: STRING + - description: X-LB-Tags HTTP header + mode: NULLABLE + name: x_lb_tags + type: STRING + mode: NULLABLE + name: header + type: RECORD + - description: Results of ISP lookup based on the client's IP address + fields: + - description: The specific geo ISP database version used for this lookup + mode: NULLABLE + name: db_version + type: STRING + - description: The name of the ISP associated with the client's IP address + mode: NULLABLE + name: name + type: STRING + - description: The name of a specific business entity associated with the client's IP address when available; otherwise the ISP name + mode: NULLABLE + name: organization + type: STRING + mode: NULLABLE + name: isp + type: RECORD + - description: Parsed components of the client's user agent string + fields: + - mode: NULLABLE + name: browser + type: STRING + - mode: NULLABLE + name: os + type: STRING + - mode: NULLABLE + name: version + type: STRING + mode: NULLABLE + name: user_agent + type: RECORD + mode: NULLABLE + name: metadata + type: RECORD +- fields: + - fields: + - description: Reports `true` if the client was successfully migrated from the Android-specific implementation of the Glean SDK to the cross-platform one. + mode: NULLABLE + name: glean_core_migration_successful + type: BOOLEAN + - description: Set to true if the tasks that are queued prior to Glean initialization time out. + mode: NULLABLE + name: glean_error_preinit_tasks_timeout + type: BOOLEAN + - description: | + True if we failed to register with the idle service. Absent otherwise. + Means IPC probably isn't working well. + Child-process data will likely be absent, or incomplete. + mode: NULLABLE + name: fog_failed_idle_registration + type: BOOLEAN + - description: | + True if the Proton default theme is enabled. + mode: NULLABLE + name: browser_ui_proton_enabled + type: BOOLEAN + - description: | + The value `true`, recorded when a Firefox Telemetry "main" ping is about + to be assembled. + To be used to validate GIFFT. + mode: NULLABLE + name: gifft_validation_main_ping_assembling + type: BOOLEAN + - description: | + Tracks the value of the cookiebanners.service.detectOnly pref. + mode: NULLABLE + name: cookie_banners_service_detect_only + type: BOOLEAN + - description: | + Recorded on every launch of a Firefox install on macOS, with a boolean value indicating whether Firefox was restored by macOS or if it was manually launched by a user. + mode: NULLABLE + name: startup_is_restored_by_macos + type: BOOLEAN + - description: | + Indicates if the user has opted out of using the shopping component. + Set during shopping component init and updated when changed in browser. + mode: NULLABLE + name: shopping_settings_component_opted_out + type: BOOLEAN + - description: | + Indicates if the user has completed the Shopping product Onboarding + experience. Set during shopping component init and updated when changed + in browser. + mode: NULLABLE + name: shopping_settings_has_onboarded + type: BOOLEAN + - description: | + Indicates if Nimbus has disabled the use the shopping component. + mode: NULLABLE + name: shopping_settings_nimbus_disabled_shopping + type: BOOLEAN + - description: | + Corresponds to the value of `WebExtensionPolicy.useRemoteWebExtensions`. + mode: NULLABLE + name: extensions_use_remote_policy + type: BOOLEAN + - description: | + Corresponds to the value of `extensions.webextensions.remote` pref. + mode: NULLABLE + name: extensions_use_remote_pref + type: BOOLEAN + - description: | + Records whether the browser.newtabpage.activity-stream.improvesearch.handoffToAwesomebar preference is enabled or disabled + mode: NULLABLE + name: newtab_handoff_preference_enabled + type: BOOLEAN + - description: | + Indicates if the user has manually disabled ads. Set during shopping + component init and updated when changed in browser. + mode: NULLABLE + name: shopping_settings_disabled_ads + type: BOOLEAN + - description: | + Boolean indicated whether graphics is running in headless (no display) mode (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_status_headless + type: BOOLEAN + - description: | + Indicates if the user has manually disabled the auto open sidebar feature. + Set during shopping component init and updated when changed in browser. + mode: NULLABLE + name: shopping_settings_auto_open_user_disabled + type: BOOLEAN + - description: | + Keeps track of whether the feature is enabled at startup. + mode: NULLABLE + name: bounce_tracking_protection_enabled_at_startup + type: BOOLEAN + - description: | + Keeps track of whether the feature is enabled and running in dry-run mode at startup. + mode: NULLABLE + name: bounce_tracking_protection_enabled_dry_run_mode_at_startup + type: BOOLEAN + - description: | + Whether the installer is running from an elevated admin user + mode: NULLABLE + name: installation_first_seen_admin_user + type: BOOLEAN + - description: | + (optional, present if installer_type is "full") Whether the default path was used + mode: NULLABLE + name: installation_first_seen_default_path + type: BOOLEAN + - description: | + (optional, present if installer_type is "full") Whether this was an MSI install + mode: NULLABLE + name: installation_first_seen_from_msi + type: BOOLEAN + - description: | + Whether there was already an install in this location + mode: NULLABLE + name: installation_first_seen_install_existed + type: BOOLEAN + - description: | + Whether there was already any non-MSIX install on this system + mode: NULLABLE + name: installation_first_seen_other_inst + type: BOOLEAN + - description: | + Whether there was already any MSIX install on this system + mode: NULLABLE + name: installation_first_seen_other_msix_inst + type: BOOLEAN + - description: | + Whether the top-level profile directory existed + mode: NULLABLE + name: installation_first_seen_profdir_existed + type: BOOLEAN + - description: | + (optional, present if installer_type is "full") Whether this was a silent install + mode: NULLABLE + name: installation_first_seen_silent + type: BOOLEAN + - description: | + Indicates if the chatbot feature is enabled. + mode: NULLABLE + name: genai_chatbot_enabled + type: BOOLEAN + - description: | + Indicates if the chatbot feature would open in sidebar. + mode: NULLABLE + name: genai_chatbot_sidebar + type: BOOLEAN + - description: | + Indicates if the chatbot feature would show shortcuts on selection. + mode: NULLABLE + name: genai_chatbot_shortcuts + type: BOOLEAN + - description: | + Indicates if the chatbot feature would show shortcuts custom input. + mode: NULLABLE + name: genai_chatbot_shortcuts_custom + type: BOOLEAN + - description: | + Records whether TLS key logging has been enabled via the environment variable SSLKEYLOGFILE. + mode: NULLABLE + name: sslkeylogging_enabled + type: BOOLEAN + - description: | + Bool tracking if the user has always underline links enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.always_underline_links. + mode: NULLABLE + name: a11y_always_underline_links + type: BOOLEAN + - description: | + Boolean tracking if the user has the backplate preference enabled or disabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.backplate. + mode: NULLABLE + name: a11y_backplate + type: BOOLEAN + - description: | + Boolean tracking if the user has an invert colors OS setting enabled. This metric was generated to correspond to the Legacy Telemetry scalar a11y.invert_colors. + mode: NULLABLE + name: a11y_invert_colors + type: BOOLEAN + - description: | + Bool tracking if the user has system colors enabled in firefox. This metric was generated to correspond to the Legacy Telemetry scalar a11y.use_system_colors. + mode: NULLABLE + name: a11y_use_system_colors + type: BOOLEAN + - description: | + True if the about:home startup cache was written via the AsyncShutdown blocker. This metric was generated to correspond to the Legacy Telemetry scalar browser.startup.abouthome_cache_shutdownwrite. + mode: NULLABLE + name: browser_startup_abouthome_cache_shutdownwrite + type: BOOLEAN + - description: | + A boolean reporting the value of the privacy.clearOnShutdown.cache pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_cache. + mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_cache + type: BOOLEAN + - description: | + A boolean reporting the value of the privacy.clearOnShutdown.cookies pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_cookies. + mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_cookies + type: BOOLEAN + - description: | + A boolean reporting the value of the privacy.clearOnShutdown.downloads pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_downloads. + mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_downloads + type: BOOLEAN + - description: | + A boolean reporting the value of the privacy.clearOnShutdown.formdata pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_formdata. + mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_formdata + type: BOOLEAN + - description: | + A boolean reporting the value of the privacy.clearOnShutdown.history pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_history. + mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_history + type: BOOLEAN + - description: | + A boolean reporting the value of the privacy.clearOnShutdown.offlineApps pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_offlineApps. + mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_offline_apps + type: BOOLEAN + - description: | + A boolean reporting the value of the privacy.clearOnShutdown.openWindows pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_openWindows. + mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_open_windows + type: BOOLEAN + - description: | + A boolean reporting the value of the privacy.clearOnShutdown.sessions pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_sessions. + mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_sessions + type: BOOLEAN + - description: | + A boolean reporting the value of the privacy.clearOnShutdown.siteSettings pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_clearOnShutdown_siteSettings. + mode: NULLABLE + name: datasanitization_privacy_clear_on_shutdown_site_settings + type: BOOLEAN + - description: | + A boolean reporting the value of the privacy.sanitize.sanitizeOnShutdown pref. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.privacy_sanitize_sanitizeOnShutdown. + mode: NULLABLE + name: datasanitization_privacy_sanitize_sanitize_on_shutdown + type: BOOLEAN + - description: | + Boolean indicating whether the os compositor is being used by WebRender. Only collected in the first subsession. This metric was generated to correspond to the Legacy Telemetry scalar gfx.os_compositor. + mode: NULLABLE + name: gfx_os_compositor + type: BOOLEAN + - description: | + Does the hardware support accurate display of HDR content This metric was generated to correspond to the Legacy Telemetry scalar gfx.supports_hdr. + mode: NULLABLE + name: gfx_supports_hdr + type: BOOLEAN + - description: | + Is the system temporary directory writable This metric was generated to correspond to the Legacy Telemetry scalar gfx.tmp_writable. + mode: NULLABLE + name: gfx_tmp_writable + type: BOOLEAN + - description: | + Set to true if a failure occurred reading profile/prefs.js. This metric was generated to correspond to the Legacy Telemetry scalar preferences.prefs_file_was_invalid. + mode: NULLABLE + name: preferences_prefs_file_was_invalid + type: BOOLEAN + - description: | + True if HTTP3 is enabled at the start of a session. This metric was generated to correspond to the Legacy Telemetry scalar networking.http3_enabled. + mode: NULLABLE + name: networking_http3_enabled + type: BOOLEAN + - description: | + Set when a profile refresh is initiated from the uninstaller. This metric was generated to correspond to the Legacy Telemetry scalar migration.uninstaller_profile_refresh. + mode: NULLABLE + name: migration_uninstaller_profile_refresh + type: BOOLEAN + - description: | + Indicates that the process is lauched with Admin privileges but without UAC. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_admin_without_uac. + mode: NULLABLE + name: os_environment_is_admin_without_uac + type: BOOLEAN + - description: | + Whether this app was kept in macOS Dock on startup This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_kept_in_dock. + mode: NULLABLE + name: os_environment_is_kept_in_dock + type: BOOLEAN + - description: | + Whether the non-Private Browsing version of this app was pinned to taskbar on startup This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_taskbar_pinned. + mode: NULLABLE + name: os_environment_is_taskbar_pinned + type: BOOLEAN + - description: | + Whether the Private Browsing version of this app was pinned to taskbar on startup This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_taskbar_pinned_private. + mode: NULLABLE + name: os_environment_is_taskbar_pinned_private + type: BOOLEAN + - description: | + Whether the user has Picture-in-Picture enabled. This metric was generated to correspond to the Legacy Telemetry scalar pictureinpicture.toggle_enabled. + mode: NULLABLE + name: pictureinpicture_toggle_enabled + type: BOOLEAN + - description: | + Whether or not this startup is the first startup since OS reboot (according to our best guess.) This metric was generated to correspond to the Legacy Telemetry scalar startup.is_cold. + mode: NULLABLE + name: startup_is_cold + type: BOOLEAN + - description: | + User opted into sending Telemetry data again. This metric was generated to correspond to the Legacy Telemetry scalar telemetry.data_upload_optin. + mode: NULLABLE + name: telemetry_data_upload_optin + type: BOOLEAN + - description: | + True if cryptominer blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.cryptomining_blocking_enabled. + mode: NULLABLE + name: contentblocking_cryptomining_blocking_enabled + type: BOOLEAN + - description: | + True if fingerprinter blocking is enabled globally at startup. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.fingerprinting_blocking_enabled. + mode: NULLABLE + name: contentblocking_fingerprinting_blocking_enabled + type: BOOLEAN + - description: | + Attempt to determine if the user is an enterprise user based on various signals. This metric was generated to correspond to the Legacy Telemetry scalar policies.is_enterprise. + mode: NULLABLE + name: policies_is_enterprise + type: BOOLEAN + - description: | + Whether the OS theme is dark. This metric was generated to correspond to the Legacy Telemetry scalar widget.dark_mode. + mode: NULLABLE + name: widget_dark_mode + type: BOOLEAN + - description: | + Whether a private browsing window has been used in the session. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.private_window_used. + mode: NULLABLE + name: dom_parentprocess_private_window_used + type: BOOLEAN + - description: | + True if the BackupService is enabled by default. + mode: NULLABLE + name: browser_backup_enabled + type: BOOLEAN + - description: | + True if the BackupService is configured to encrypt backups. + mode: NULLABLE + name: browser_backup_pswd_encrypted + type: BOOLEAN + - description: | + True if the BackupService is configured to automatically create backups in the background. + mode: NULLABLE + name: browser_backup_scheduler_enabled + type: BOOLEAN + mode: NULLABLE + name: boolean + type: RECORD + - fields: + - description: | + The number of tasks that overflowed the pre-initialization buffer. + Only sent if the buffer ever overflows. + + In Version 0 this reported the total number of tasks enqueued. + mode: NULLABLE + name: glean_error_preinit_tasks_overflow + type: INTEGER + - description: This metric counts how many times a dirty bit was detected when starting the Glean SDK, on Android. This dirty bit is set to `true` when Android's lifecycle `ON_START` is hit and flipped back to false on `ON_STOP`. When an application is force-closed, it might not get the `ON_STOP` and so the value would stay `true`. The next time Glean starts, it will increment this counter. + mode: NULLABLE + name: glean_validation_app_forceclosed_count + type: INTEGER + - description: The number of baseline pings sent during the lifetime of this metrics ping. + mode: NULLABLE + name: glean_validation_baseline_ping_count + type: INTEGER + - description: | + The number of pings deleted after the quota + for the size of the pending pings directory or number of files is hit. + Since quota is only calculated for the pending pings directory, + and deletion request ping live in a different directory, + deletion request pings are never deleted. + mode: NULLABLE + name: glean_upload_deleted_pings_after_quota_hit + type: INTEGER + - description: | + The total number of pending pings at startup. + This does not include deletion-request pings. + mode: NULLABLE + name: glean_upload_pending_pings + type: INTEGER + - description: | + The number of times the ipc buffer failed to be replayed in the + parent process. + mode: NULLABLE + name: fog_ipc_replay_failures + type: INTEGER + - description: | + On mobile, the number of times the application went to foreground. + mode: NULLABLE + name: glean_validation_foreground_count + type: INTEGER + - description: | + The number of times we encountered an IO error + when writing a pending ping to disk. + mode: NULLABLE + name: glean_error_io + type: INTEGER + - description: | + Counts the number of times we encountered an invalid timezone offset + when trying to get the current time. + A timezone offset is invalid if it is outside [-24h, +24h]. + If invalid a UTC offset is used (+0h). + mode: NULLABLE + name: glean_time_invalid_timezone_offset + type: INTEGER + - description: | + Total CPU time used by all processes in ms. + mode: NULLABLE + name: power_total_cpu_time_ms + type: INTEGER + - description: | + The number of five-second intervals ('ticks') the user was considered + 'active'. + + 'active' means keyboard or mouse interaction with the application. + It doesn't take into account whether or not the window has focus or is in + the foreground, only if it is receiving these interaction events. + + Migrated from Telemetry's `browser.engagement.active_ticks`. + mode: NULLABLE + name: browser_engagement_active_ticks + type: INTEGER + - description: | + The number of total non-unique http(s) URIs visited, including page + reloads, after the session has been restored. URIs on minimized or + background tabs may also be counted. Private browsing uris are included. + + Migrated from Telemetry's + `browser.engagement.total_uri_count_normal_and_private_mode`. + mode: NULLABLE + name: browser_engagement_uri_count + type: INTEGER + - description: | + The number of times we failed to flush all non-parent-process data, + throwing even partial results into the trash. + If this number is high, we might consider writing custom `MozPromise`- + handling code instead of using `MozPromise::All`. + mode: NULLABLE + name: fog_ipc_flush_failures + type: INTEGER + - description: | + Total GPU time used by all processes in ms. + mode: NULLABLE + name: power_total_gpu_time_ms + type: INTEGER + - description: | + Impossibly large CPU time values that were discarded. + mode: NULLABLE + name: power_cpu_time_bogus_values + type: INTEGER + - description: | + Impossibly large GPU time values that were discarded. + mode: NULLABLE + name: power_gpu_time_bogus_values + type: INTEGER + - description: | + How many times threads woke up and could have woken up a CPU core. + mode: NULLABLE + name: power_total_thread_wakeups + type: INTEGER + - description: | + The number of times we tried to register shutdown flush routines for + content child processes, and failed (probably because there was no main + thread). + As a result there may be data loss from content child processes. + Large or rising number of clients experiencing this indicates we should + perhaps refactor content child shutdown in FOG to try harder to register + flush operations. + Will likely be obsoleted by bug 1641989. + mode: NULLABLE + name: fog_ipc_shutdown_registration_failures + type: INTEGER + - description: | + The number of PingCentre send failures. + mode: NULLABLE + name: ping_centre_send_failures + type: INTEGER + - description: | + How many times PDF Viewer was used. + mode: NULLABLE + name: pdfjs_used + type: INTEGER + - description: | + The number of RTCRtpSenders created. + mode: NULLABLE + name: rtcrtpsender_count + type: INTEGER + - description: | + The number of RTCRtpSenders created that use the compatibility mode for setParameters. + mode: NULLABLE + name: rtcrtpsender_count_setparameters_compat + type: INTEGER + - description: | + How many pings were dropped because we found them already in-flight. + mode: NULLABLE + name: glean_upload_in_flight_pings_dropped + type: INTEGER + - description: | + How many ping upload responses did we not record as a success or failure + (in `glean.upload.send_success` or `glean.upload.send_failue`, + respectively) due to an inconsistency in our internal bookkeeping? + mode: NULLABLE + name: glean_upload_missing_send_ids + type: INTEGER + - description: | + How many times window.print was requested. + mode: NULLABLE + name: dotprint_requested + type: INTEGER + - description: | + Opening the Android print dialog was requested via window.print. + mode: NULLABLE + name: dotprint_android_dialog_requested + type: INTEGER + - description: | + How often something went awry within + `AboutWelcome.submitGleanPingForPing`, preventing ping submission. + mode: NULLABLE + name: messaging_system_glean_ping_for_ping_failures + type: INTEGER + - description: | + The count of translation requests. + mode: NULLABLE + name: translations_requests_count + type: INTEGER + - description: | + Counts the number of times init had to be called during shutdown. + Should never have a value for any session long enough to grow idle. + mode: NULLABLE + name: fog_inits_during_shutdown + type: INTEGER + - description: | + Counts how many times we do not resolve a blob URL because of different partition keys + mode: NULLABLE + name: bloburl_resolve_stopped + type: INTEGER + - description: | + Counts number of visits to a supported retailer product page + while enrolled in either the control or treatment branches + of the shopping experiment. + mode: NULLABLE + name: shopping_product_page_visits + type: INTEGER + - description: | + Counts how often we find a cache folder that wasn't purged at shutdown by a background task process. + mode: NULLABLE + name: networking_residual_cache_folder_count + type: INTEGER + - description: | + Counts how often the cookie banner is still shown even if we have injected cookies. + mode: NULLABLE + name: cookie_banners_cookie_injection_fail + type: INTEGER + - description: | + This counts the number of times we set a cookie. Introduced as a denomenator for measuring CHIPS adoption. + mode: NULLABLE + name: networking_set_cookie + type: INTEGER + - description: | + The total number of successful TLS server certificate verifications. + mode: NULLABLE + name: tls_certificate_verifications + type: INTEGER + - description: | + Counts the number of times the user changes the color of a highlight. + mode: NULLABLE + name: pdfjs_editing_highlight_color_changed + type: INTEGER + - description: | + Counts the number of times the user deletes highlights. + mode: NULLABLE + name: pdfjs_editing_highlight_deleted + type: INTEGER + - description: | + Counts the number of times the user edits highlights. + mode: NULLABLE + name: pdfjs_editing_highlight_edited + type: INTEGER + - description: | + Counts the number of times the user prints a PDF with highlights. + mode: NULLABLE + name: pdfjs_editing_highlight_print + type: INTEGER + - description: | + Counts the number of times the user saves a PDF with highlights. + mode: NULLABLE + name: pdfjs_editing_highlight_save + type: INTEGER + - description: | + Counts the number of times the user changes the thickness of a free highlight. + mode: NULLABLE + name: pdfjs_editing_highlight_thickness_changed + type: INTEGER + - description: | + Counts the number of times the user toggles the visibility of highlights. + mode: NULLABLE + name: pdfjs_editing_highlight_toggle_visibility + type: INTEGER + - description: | + How many regular HTTPS-First (`dom.security.https_first` enabled) upgrades fail and get downgraded again. + mode: NULLABLE + name: httpsfirst_downgraded + type: INTEGER + - description: | + How many schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades fail and get downgraded again. + mode: NULLABLE + name: httpsfirst_downgraded_schemeless + type: INTEGER + - description: | + Counts how often a load is successfully upgraded to HTTPS because of HTTPS-First (`dom.security.https_first` enabled). This does not include loads that get downgraded again. + mode: NULLABLE + name: httpsfirst_upgraded + type: INTEGER + - description: | + Counts how often a load is successfully upgraded to HTTPS because of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless). This does not include loads that get downgraded again. + mode: NULLABLE + name: httpsfirst_upgraded_schemeless + type: INTEGER + - description: | + Record when a page requests canPlayType for a HLS media type. + mode: NULLABLE + name: hls_canplay_requested + type: INTEGER + - description: | + Record when a canPlayType request supports HLS. + mode: NULLABLE + name: hls_canplay_supported + type: INTEGER + - description: | + Counts sites purged from BTP that are classified as trackers as part of the following lists: [emailtracking-protection, fingerprinting-protection, socialtracking-protection, tracking-protection] + mode: NULLABLE + name: bounce_tracking_protection_purge_count_classified_tracker + type: INTEGER + - description: The total number of failed calls to navigator.credentials.create. + mode: NULLABLE + name: webauthn_create_failure + type: INTEGER + - description: The number of client-side discoverable credentials (passkeys) created. + mode: NULLABLE + name: webauthn_create_passkey + type: INTEGER + - description: The total number of successful calls to navigator.credentials.create. + mode: NULLABLE + name: webauthn_create_success + type: INTEGER + - description: The total number of failed calls to navigator.credentials.get. + mode: NULLABLE + name: webauthn_get_failure + type: INTEGER + - description: The total number of successful calls to navigator.credentials.get. + mode: NULLABLE + name: webauthn_get_success + type: INTEGER + - description: | + Number of failed crash report submissions + mode: NULLABLE + name: crash_submission_failure + type: INTEGER + - description: | + Number of pending crash report submissions + mode: NULLABLE + name: crash_submission_pending + type: INTEGER + - description: | + Number of successfull crash report submissions + mode: NULLABLE + name: crash_submission_success + type: INTEGER + - description: | + Counts how often the parent-connect-timeout timer is necessary to clear up EarlyHintPreloader + mode: NULLABLE + name: netwerk_parent_connect_timeout + type: INTEGER + - description: | + Counts the number of times the os socket limit was reached. i.e. CanAttachSocket() returned false. + mode: NULLABLE + name: networking_os_socket_limit_reached + type: INTEGER + - description: | + Number of times the page-icon protocol serves an icon equal to or larger than requested. + mode: NULLABLE + name: page_icon_fit_icon_count + type: INTEGER + - description: | + Number of times the page-icon protocol serves an icon smaller than requested. + mode: NULLABLE + name: page_icon_small_icon_count + type: INTEGER + - description: | + Whether we saw a permission request from an insecure context. + mode: NULLABLE + name: web_notification_insecure_context_permission_request + type: INTEGER + - description: | + How many certificate signature verifications are performed. + mode: NULLABLE + name: cert_signature_cache_total + type: INTEGER + - description: | + How many SCT signature verifications are performed. + mode: NULLABLE + name: sct_signature_cache_total + type: INTEGER + - description: | + The number of webrtc transports that have started a DTLS handshake as the client. + mode: NULLABLE + name: webrtcdtls_client_handshake_started_counter + type: INTEGER + - description: | + The number of webrtc transports that have started a DTLS handshake as the server. + mode: NULLABLE + name: webrtcdtls_server_handshake_started_counter + type: INTEGER + - description: | + Upticks whenever a LS request cancellation message is received. This includes requests for ensuring either LSDatabase or LSObserver in the child. + mode: NULLABLE + name: ls_request_recv_cancellation + type: INTEGER + - description: | + Upticks whenever a LS request cancellation message is sent. This includes requests for ensuring either LSDatabase or LSObserver. + mode: NULLABLE + name: ls_request_send_cancellation + type: INTEGER + - description: | + Count of overshoot events, where the user reverses scrollwheel direction soon after the last scrollwheel input. This metric was generated to correspond to the Legacy Telemetry scalar apz.scrollwheel_overshoot. + mode: NULLABLE + name: apz_scrollwheel_overshoot + type: INTEGER + - description: | + The count of how many times files were opened from the download panel. This metric was generated to correspond to the Legacy Telemetry scalar downloads.file_opened. + mode: NULLABLE + name: downloads_file_opened + type: INTEGER + - description: | + The count of how many times the downloads panel was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar downloads.panel_shown. + mode: NULLABLE + name: downloads_panel_shown + type: INTEGER + - description: | + The count of how many times the find next button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_next. + mode: NULLABLE + name: findbar_find_next + type: INTEGER + - description: | + The count of how many times the find previous button was used per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.find_prev. + mode: NULLABLE + name: findbar_find_prev + type: INTEGER + - description: | + The count of how many times the "Highlight All" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.highlight_all. + mode: NULLABLE + name: findbar_highlight_all + type: INTEGER + - description: | + The count of how many times the "Match Case" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_case. + mode: NULLABLE + name: findbar_match_case + type: INTEGER + - description: | + The count of how many times the "Match Diacritics" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.match_diacritics. + mode: NULLABLE + name: findbar_match_diacritics + type: INTEGER + - description: | + The count of how many times the "Find toolbar" was shown per session. This metric was generated to correspond to the Legacy Telemetry scalar findbar.shown. + mode: NULLABLE + name: findbar_shown + type: INTEGER + - description: | + The count of how many times the "Whole Words" button was used in find toolbar. This metric was generated to correspond to the Legacy Telemetry scalar findbar.whole_words. + mode: NULLABLE + name: findbar_whole_words + type: INTEGER + - description: | + Number of skipped composites, happening when rendering is too slow to keep up with content. This metric was generated to correspond to the Legacy Telemetry scalar gfx.skipped_composites. + mode: NULLABLE + name: gfx_skipped_composites + type: INTEGER + - description: | + The number of times a document hierarchy contained at least one HTMLMediaElement. In addition, the telemetry probe 'MIXED_CONTENT_UNBLOCK_COUNTER' records the total number of loaded top level content documents, which can help us calculate the result of the percentage of documents using media. This metric was generated to correspond to the Legacy Telemetry scalar media.element_in_page_count. + mode: NULLABLE + name: media_element_in_page_count + type: INTEGER + - description: | + The number of times we ran DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_attempts. + mode: NULLABLE + name: networking_doh_heuristics_attempts + type: INTEGER + - description: | + The number of times we passed DoH heuristics. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_pass_count. + mode: NULLABLE + name: networking_doh_heuristics_pass_count + type: INTEGER + - description: | + The number of loads of cross origin opaque resources. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.cross_origin_opaque_response_count. + mode: NULLABLE + name: opaque_response_blocking_cross_origin_opaque_response_count + type: INTEGER + - description: | + The number of times we run the JS validator. This metric was generated to correspond to the Legacy Telemetry scalar opaque.response.blocking.javascript_validation_count. + mode: NULLABLE + name: opaque_response_blocking_javascript_validation_count + type: INTEGER + - description: | + Number of sponsored visits that could not find their triggering URL in history. We expect this to be a small number just due to the navigation layer manipulating URLs. A large or growing value may be a concern. This metric was generated to correspond to the Legacy Telemetry scalar places.sponsored_visit_no_triggering_url. + mode: NULLABLE + name: places_sponsored_visit_no_triggering_url + type: INTEGER + - description: | + How many certificate trust lookups are performed. + mode: NULLABLE + name: cert_trust_cache_total + type: INTEGER + - description: | + A count of the number of tracking events blocked. This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.trackers_blocked_count. + mode: NULLABLE + name: contentblocking_trackers_blocked_count + type: INTEGER + - description: | + This counts the number of invalid first-party partitioned cookies that don't have the partitioned cookie attribution(CHIPS). + mode: NULLABLE + name: networking_cookie_count_invalid_first_party_partitioned_in_db + type: INTEGER + - description: | + This counts the number of times we set an invalid first-party partitioned cookie. + mode: NULLABLE + name: networking_set_invalid_first_party_partitioned_cookie + type: INTEGER + - description: | + A counter incremented every time a user opens the system print dialog from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_opened_via_preview_tm. + mode: NULLABLE + name: printing_dialog_opened_via_preview_tm + type: INTEGER + - description: | + A counter incremented every time a user cancels a system print dialog that they opened from the print preview interface. This metric was generated to correspond to the Legacy Telemetry scalar printing.dialog_via_preview_cancelled_tm. + mode: NULLABLE + name: printing_dialog_via_preview_cancelled_tm + type: INTEGER + - description: | + A counter incremented every time a user exits print preview without printing. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_cancelled_tm. + mode: NULLABLE + name: printing_preview_cancelled_tm + type: INTEGER + - description: | + A counter incremented every time a user opens print preview. This metric was generated to correspond to the Legacy Telemetry scalar printing.preview_opened_tm. + mode: NULLABLE + name: printing_preview_opened_tm + type: INTEGER + - description: | + A counter incremented every time a silent print (a print without a print settings dialog being opened) is initiated. This happens when extensions invoke ExtensionAPI.tabs.saveAsPDF, for example, or when the print.always_print_silent pref is set. This metric was generated to correspond to the Legacy Telemetry scalar printing.silent_print. + mode: NULLABLE + name: printing_silent_print + type: INTEGER + - description: | + The count of the total non-unique http(s) URIs visited in a subsession, including page reloads, after the session has been restored. URIs on minimized or background tabs may also be counted towards this. Private browsing is not included in this count. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.total_uri_count. + mode: NULLABLE + name: browser_engagement_uri_count_normal_mode + type: INTEGER + - description: | + The number of times the about:restartrequired page appeared due to a buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch. + mode: NULLABLE + name: dom_contentprocess_build_id_mismatch + type: INTEGER + - description: | + The number of times a process crashed early but we could verify it was not because of buildID mismatch between the parent and the content processes. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.buildID_mismatch_false_positive. + mode: NULLABLE + name: dom_contentprocess_build_id_mismatch_false_positive + type: INTEGER + - description: | + The number of times we've had the opportunity to change content process priority due to a tab switch or a tab being opened. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_change_considered. + mode: NULLABLE + name: dom_contentprocess_os_priority_change_considered + type: INTEGER + - description: | + The number of times a content process has had its OS priority lowered due to only containing background tabs without audible media playing. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_lowered. + mode: NULLABLE + name: dom_contentprocess_os_priority_lowered + type: INTEGER + - description: | + The number of times a content process has had its OS priority raised due to containing at least one foregrounded tab, or a tab with audible media has started playing in it. This metric was generated to correspond to the Legacy Telemetry scalar dom.contentprocess.os_priority_raised. + mode: NULLABLE + name: dom_contentprocess_os_priority_raised + type: INTEGER + - description: | + The number of documents that contained enabled MathML elements. This metric was generated to correspond to the Legacy Telemetry scalar mathml.doc_count. + mode: NULLABLE + name: mathml_doc_count + type: INTEGER + - description: | + Records a count of how many times a drag event started for a tab within the All Tabs panel. This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.all_tabs_panel_dragstart_tab_event_count. + mode: NULLABLE + name: browser_ui_interaction_all_tabs_panel_dragstart_tab_event_count + type: INTEGER + - description: | + Recorded when text recognition in images fails for some unknown reason. This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.textrecognition_error. + mode: NULLABLE + name: browser_ui_interaction_textrecognition_error + type: INTEGER + - description: | + Counts the duplicated IDs from the server. The ability to detect depends on the pref `dom.push.maxRecentMessageIDsPerSubscription`. + mode: NULLABLE + name: web_push_detected_duplicated_message_ids + type: INTEGER + - description: | + The count of bookmarks added to the bookmarks toolbar. This counts bookmarks created on the bookmarks toolbar and bookmarks moved to the bookmarks toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_added. + mode: NULLABLE + name: browser_engagement_bookmarks_toolbar_bookmark_added + type: INTEGER + - description: | + The count of bookmarks opened from the Bookmarks Toolbar. This counts bookmarks opened on the toolbar and bookmarks opened from the 'symlinked' Other Bookmarks folder on the Bookmarks Toolbar. It does not count Bookmarks Toolbar bookmarks opened via the Library, Bookmarks Menu, or other UI since the goal is to measure interactions that pass through the toolbar. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.bookmarks_toolbar_bookmark_opened. + mode: NULLABLE + name: browser_engagement_bookmarks_toolbar_bookmark_opened + type: INTEGER + - description: | + The count of tab open events per subsession, across all windows, after the session has been restored. This includes tab open events from private windows and from manual session restorations (i.e. after crashes and from about:home), but excludes tabs opened vertically. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.tab_open_event_count. + mode: NULLABLE + name: browser_engagement_tab_open_event_count + type: INTEGER + - description: | + The count of tab pinned events per subsession, across all windows, after the session has been restored. This includes tab pinned events from private windows. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.tab_pinned_event_count. + mode: NULLABLE + name: browser_engagement_tab_pinned_event_count + type: INTEGER + - description: | + The count of tab reload events by the user after unloaded. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.tab_reload_count. + mode: NULLABLE + name: browser_engagement_tab_reload_count + type: INTEGER + - description: | + The count of tab unload events by TabUnloader due to a low-memory situation. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.tab_unload_count. + mode: NULLABLE + name: browser_engagement_tab_unload_count + type: INTEGER + - description: | + The count of the total non-unique URIs visited in a subsession, not restricted to a specific protocol, including page reloads and about:* pages (other than initial pages such as about:blank, ...), after the session has been restored. This does not include background page requests and URIs from embedded pages or private browsing. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.unfiltered_uri_count. + mode: NULLABLE + name: browser_engagement_unfiltered_uri_count + type: INTEGER + - description: | + The count of tab open events with vertical tabs enabled. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.vertical_tab_open_event_count. + mode: NULLABLE + name: browser_engagement_vertical_tab_open_event_count + type: INTEGER + - description: | + The count of tab pinned events with vertical tabs enabled. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.vertical_tab_pinned_event_count. + mode: NULLABLE + name: browser_engagement_vertical_tab_pinned_event_count + type: INTEGER + - description: | + The count of browser window open events per subsession, after the session has been restored. The count includes private windows and the ones from manual session restorations (i.e. after crashes and from about:home). This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.window_open_event_count. + mode: NULLABLE + name: browser_engagement_window_open_event_count + type: INTEGER + - description: | + A uint recording the number of abandoned engagements in the urlbar. An abandonment occurs when the user begins using the urlbar but stops before completing the engagement. This can happen when the user clicks outside the urlbar to focus a different part of the window. It can also happen when the user switches to another window while the urlbar is focused. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.abandonment. + mode: NULLABLE + name: urlbar_abandonment_count + type: INTEGER + - description: | + A uint recording the deletion count for autofilled string in the urlbar. This occurs when the user deletes whole autofilled string by BACKSPACE or DELETE key while the autofilled string is selected. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.autofill_deletion. + mode: NULLABLE + name: urlbar_autofill_deletion + type: INTEGER + - description: | + A uint recording the number of engagements the user completes in the urlbar. An engagement occurs when the user navigates to a page using the urlbar, for example by picking a result in the urlbar panel or typing a search term or URL in the urlbar and pressing the enter key. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.engagement. + mode: NULLABLE + name: urlbar_engagement_count + type: INTEGER + - description: | + Counts how many times about-page type was autofilled per engagement. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.impression.autofill_about. + mode: NULLABLE + name: urlbar_impression_autofill_about + type: INTEGER + - description: | + Counts how many times adaptive history type was autofilled per engagement. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.impression.autofill_adaptive. + mode: NULLABLE + name: urlbar_impression_autofill_adaptive + type: INTEGER + - description: | + Counts how many times origin type was autofilled per engagement. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.impression.autofill_origin. + mode: NULLABLE + name: urlbar_impression_autofill_origin + type: INTEGER + - description: | + Counts how many times other type was autofilled per engagement. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.impression.autofill_other. + mode: NULLABLE + name: urlbar_impression_autofill_other + type: INTEGER + - description: | + Counts how many times url type was autofilled per engagement. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.impression.autofill_url. + mode: NULLABLE + name: urlbar_impression_autofill_url + type: INTEGER + - description: | + The count of the number of times search terms were removed from the urlbar due to a shown PopupNotification. This event can happen when a user loads a SERP and a PopupNotification is shown, as well as when a user switches away from a tab on a SERP showing a PopupNotification and switches back to it. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.persistedsearchterms.revert_by_popup_count. + mode: NULLABLE + name: urlbar_persistedsearchterms_revert_by_popup_count + type: INTEGER + - description: | + The count of the number of times search terms persisted in the Urlbar. This gets recorded after a user loads a SERP that persists search terms, or switches back to an existing tab that should be showing the persisted search terms in the Urlbar, regardless of whether PopupNotification cleared the search terms from the Urlbar. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.persistedsearchterms.view_count. + mode: NULLABLE + name: urlbar_persistedsearchterms_view_count + type: INTEGER + - description: | + User has blocked seeing trending results. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.trending.block. + mode: NULLABLE + name: urlbar_trending_block + type: INTEGER + - description: | + Counts how many times the zero-prefix urlbar results panel was abandoned. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.zeroprefix.abandonment. + mode: NULLABLE + name: urlbar_zeroprefix_abandonment + type: INTEGER + - description: | + Counts how many times a result was picked in the zero-prefix urlbar results panel. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.zeroprefix.engagement. + mode: NULLABLE + name: urlbar_zeroprefix_engagement + type: INTEGER + - description: | + Counts how many times the zero-prefix urlbar results panel was shown to the user. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.zeroprefix.exposure. + mode: NULLABLE + name: urlbar_zeroprefix_exposure + type: INTEGER + mode: NULLABLE + name: counter + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: STRING + mode: REPEATED + name: jwe + type: RECORD + - fields: + - description: | + Counts the number of times a metric was set with an invalid label. + The labels are the `category.name` identifier of the metric. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: glean_error_invalid_label + type: RECORD + - description: | + Counts the number of times a metric was set a value that overflowed. + The labels are the `category.name` identifier of the metric. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: glean_error_invalid_overflow + type: RECORD + - description: | + Counts the number of times a timing metric was used incorrectly. + The labels are the `category.name` identifier of the metric. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: glean_error_invalid_state + type: RECORD + - description: | + Counts the number of times a metric was set to an invalid value. + The labels are the `category.name` identifier of the metric. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: glean_error_invalid_value + type: RECORD + - description: | + Counts the number of ping upload failures, by type of failure. + This includes failures for all ping types, + though the counts appear in the next successfully sent `metrics` ping. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: glean_upload_ping_upload_failure + type: RECORD + - description: | + A count of the pings submitted, by ping type. + + This metric appears in both the metrics and baseline pings. + + - On the metrics ping, the counts include the number of pings sent since + the last metrics ping (including the last metrics ping) + - On the baseline ping, the counts include the number of pings send since + the last baseline ping (including the last baseline ping) + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: glean_validation_pings_submitted + type: RECORD + - description: | + CPU time used by each process type in ms. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_time_per_process_type_ms + type: RECORD + - description: | + GPU time used by each process type in ms. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_gpu_time_per_process_type_ms + type: RECORD + - description: | + How many times threads woke up and could have woken up a CPU core. Broken down by process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_wakeups_per_process_type + type: RECORD + - description: | + The result of Gecko fetching an update.xml from Balrog. This captures 3 different data points: success or failure of the request, if cert pinning or content signatures were used to verify the result, and the reason for failure, if the request failed. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: gmp_update_xml_fetch_result + type: RECORD + - description: | + How many miliseconds of CPU time were used. Broken down by thread name for a given process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_ms_per_thread_content_background + type: RECORD + - description: | + How many miliseconds of CPU time were used. Broken down by thread name for a given process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_ms_per_thread_content_foreground + type: RECORD + - description: | + How many miliseconds of CPU time were used. Broken down by thread name for a given process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_ms_per_thread_gpu_process + type: RECORD + - description: | + How many miliseconds of CPU time were used. Broken down by thread name for a given process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_ms_per_thread_parent_active + type: RECORD + - description: | + How many miliseconds of CPU time were used. Broken down by thread name for a given process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_ms_per_thread_parent_inactive + type: RECORD + - description: | + How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_wakeups_per_thread_content_background + type: RECORD + - description: | + How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_wakeups_per_thread_content_foreground + type: RECORD + - description: | + How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_wakeups_per_thread_gpu_process + type: RECORD + - description: | + How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_wakeups_per_thread_parent_active + type: RECORD + - description: | + How many times threads woke up and could have woken up a CPU core. Broken down by thread name for a given process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_wakeups_per_thread_parent_inactive + type: RECORD + - description: | + Counts the different type of resources that are sent for early hints. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_early_hints + type: RECORD + - description: | + Counts the number of times some PDF editing features are used. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_editing + type: RECORD + - description: | + Counts the number of times some actions are executed in the PDF viewer. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_buttons + type: RECORD + - description: | + The result of trying to generate a DAP report. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: dap_report_generation_status + type: RECORD + - description: | + The result of trying to upload a report to the DAP server. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: dap_upload_status + type: RECORD + - description: | + Counts different type of link headers that are sent in early hint + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_eh_link_type + type: RECORD + - description: | + Given a matching cookie banner rule, how often do we handle or fail to handle cookie banners, labelled by reason. The 'success' and 'fail' counters count the total numbers independently of the reason counters. Counters are incremented after the content window has been destroyed. This metric additionally reports cookie injections after which we didn't see a banner as "success_cookie_injected". + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cookie_banners_click_result + type: RECORD + - description: | + CPU time used by content processes used only for tracking resources, labeled by the category of the tracker. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_cpu_time_per_tracker_type_ms + type: RECORD + - description: | + How many times each IPC message type was received, Broken down by process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_received_messages_content_background + type: RECORD + - description: | + How many times each IPC message type was received, Broken down by process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_received_messages_content_foreground + type: RECORD + - description: | + How many times each IPC message type was received, Broken down by process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_received_messages_gpu_process + type: RECORD + - description: | + How many times each IPC message type was received, Broken down by process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_received_messages_parent_active + type: RECORD + - description: | + How many times each IPC message type was received, Broken down by process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_received_messages_parent_inactive + type: RECORD + - description: | + How many times each IPC message type was sent. Broken down by process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_sent_messages_content_background + type: RECORD + - description: | + How many times each IPC message type was sent. Broken down by process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_sent_messages_content_foreground + type: RECORD + - description: | + How many times each IPC message type was sent. Broken down by process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_sent_messages_gpu_process + type: RECORD + - description: | + How many times each IPC message type was sent. Broken down by process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_sent_messages_parent_active + type: RECORD + - description: | + How many times each IPC message type was sent. Broken down by process type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ipc_sent_messages_parent_inactive + type: RECORD + - description: | + Counts the number of hit/miss of cookie banner rule lookups for domain. We collect three types of counters, including counters for overall rule lookup, counters for cookie rule lookup and counters for click rule lookup. We also divide the counter by top-level loads and iframe loads. For each domain, we will only collect once. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cookie_banners_rule_lookup_by_domain + type: RECORD + - description: | + Counts the number of hit/miss of cookie banner rule lookups for every load. We collect three types of counters, including counters for overall rule lookup, counters for cookie rule lookup and counters for click rule lookup. We also divide the counter by top-level loads and iframe loads. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cookie_banners_rule_lookup_by_load + type: RECORD + - description: | + The number of PingCentre send failures, + broken down by structured ingestion namespace. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ping_centre_send_failures_by_namespace + type: RECORD + - description: | + The number of PingCentre send successes, + broken down by structured ingestion namespace. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: ping_centre_send_successes_by_namespace + type: RECORD + - description: | + Number of KB we transferred keyed by "contentType" + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_data_size_pb_per_type + type: RECORD + - description: | + Number of KB we transferred keyed by "contentType" + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_data_size_per_type + type: RECORD + - description: | + Counts the occurrence of each outcome of a speculative connection + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_speculative_connection_outcome + type: RECORD + - description: | + Counts the occurrence of each outcome of a speculative connection + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_speculative_connect_outcome + type: RECORD + - description: | + Counters for startup cache data hits or misses on initializating + DNR rules for extensions loaded on application startup. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: extensions_apis_dnr_startup_cache_entries + type: RECORD + - description: | + Counts the number of times a cookie's invalid timestamp was fixed when reading it from the DB. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_cookie_timestamp_fixed_count + type: RECORD + - description: | + The number of RTCRtpSenders that have warned at least once about a `setParameters` call that attempted to change the number of encodings, broken down by the eTLD+1 of the site. Collected only on EARLY_BETA_OR_EARLIER. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: rtcrtpsender_setparameters_blame_length_changed + type: RECORD + - description: | + The number of RTCRtpSenders that have warned at least once about a `setParameters` call because `[[LastReturnedParameters]]` was not set, broken down by the eTLD+1 of the site. (ie; there was not a recent enough call to `getParameters`) Collected only on EARLY_BETA_OR_EARLIER. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: rtcrtpsender_setparameters_blame_no_getparameters + type: RECORD + - description: | + The number of RTCRtpSenders that have warned at least once about a `setParameters` call that did not set the transactionId field, broken down by the eTLD+1 of the site. Collected only on EARLY_BETA_OR_EARLIER. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: rtcrtpsender_setparameters_blame_no_transactionid + type: RECORD + - description: | + The number of RTCRtpSenders that have warned at least once about a `setParameters` call that used a stale transaction id, broken down by the eTLD+1 of the site. Collected only on EARLY_BETA_OR_EARLIER. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: rtcrtpsender_setparameters_blame_stale_transactionid + type: RECORD + - description: | + An error occured while setting up for printing. Default label is 'unknown'. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: dotprint_failure + type: RECORD + - description: | + Counts the number of times some actions are executed in the PDF viewer. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_geckoview + type: RECORD + - description: | + We received a ping with non-scalar data on a field of this name. + If this is existing pre-PingCentre-replacement data, you may need to + augment the logic in + `AboutWelcome.submitGleanPingForPing` like the other `handledKeys`. + If this is for new, post-PingCentre-replacement data, you should + probably prefer a flat structure. + If you're unsure, please ask in + [the #glean channel](https://chat.mozilla.org/#/room/#glean:mozilla.org). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: messaging_system_invalid_nested_data + type: RECORD + - description: | + Count how many times we see `Authorization` header in `Access-Control-Request-Headers` header and the possible outcomes. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_cors_authorization_header + type: RECORD + - description: The result of auto-filling a login form. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pwmgr_form_autofill_result + type: RECORD + - description: | + Counters for how many times the extension process has crashed or been created. + The labels with "_fg" / "_bg" suffixes are only recorded in Android builds, + while the "created" and "crashed" labels are recorded on both Desktop and Android + builds. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: extensions_process_event + type: RECORD + - description: Counts the number of entries stored in each nsIDataStorage. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: data_storage_entries + type: RECORD + - description: | + Counts the number of times some PDF editing features are used. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_stamp + type: RECORD + - description: | + Incremented when an audio stream is initialized, recorded alongside the + GeckoView Streaming API for the purposes of Validation (hence GVSV). + Uses a single label due to only labeled counters being supported + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: fog_validation_gvsv_audio_stream_init + type: RECORD + - description: | + Incremented when an audio stream is initialized, recorded alongside the + Glean API for the purposes of Validation (hence GVSV). + Uses a single label due to only labeled counters being supported + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: fog_validation_gvsv_audio_stream_init_gecko + type: RECORD + - description: | + Counts the type of initialization statuses on start up. + failedSettings - failed loading and migrating the search settings file. + failedFetchEngines - failed to load or parse the configuration from remote + settings. + failedLoadEngines - failed to create all the search engines from the + configuration or user installed engines. + success - search service successfully initialized. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: search_service_initialization_status + type: RECORD + - description: | + Number of times an event page hit the idle timeout and results in one of the labels. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: extensions_counters_browser_action_preload_result + type: RECORD + - description: | + Number of times an event page hit the idle timeout and results in one of the labels. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: extensions_counters_event_page_idle_result + type: RECORD + - description: | + A website was visited, which called registerProtocolHandler for mailto:// + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: protocolhandler_mailto_handler_prompt_shown + type: RECORD + - description: | + User clicked on a button to approve setting the current site as default web mail site. The sum of all counters is the total amount of user interactions and dismissing the same dialog often could be a sign of a bug. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: protocolhandler_mailto_prompt_clicked + type: RECORD + - description: | + Counts how often succeed/fail in removing cache folder that wasn't purged at shutdown + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_residual_cache_folder_removal + type: RECORD + - description: | + Counts how often a specific cmp has been detected by our cookie banner handling. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cookie_banners_cmp_detected_cmp + type: RECORD + - description: | + Given a matching CMP rule, how often do we handle or fail to handle cookie banners, labelled by reason. The 'success' and 'fail' counters count the total numbers independently of the reason counters. Counters are incremented after the content window has been destroyed. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cookie_banners_cmp_result + type: RECORD + - description: | + The number of times an unexpected error has been raised while reading + the extensions StartupCache file. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: extensions_startup_cache_read_errors + type: RECORD + - description: | + The count of successful TRR requests keyed by regular/private browsing + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_trr_request_count + type: RECORD + - description: | + Counts the preferred audio codec being signaled to us to identify preferred audio codec. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: codec_stats_audio_preferred_codec + type: RECORD + - description: | + Count how many other fec options are being offered. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: codec_stats_other_fec_signaled + type: RECORD + - description: | + Counts the number of times that ulpfec is negotiated or not negotiated on the first negotiation for each video transceiver. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: codec_stats_ulpfec_negotiated + type: RECORD + - description: | + Counts the preferred video codec being signaled to us to identify preferred video codec. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: codec_stats_video_preferred_codec + type: RECORD + - description: | + How often we use different fallbacks when the GPU process crashes + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: gpu_process_crash_fallbacks + type: RECORD + - description: The heuristic that detected the form submission. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: formautofill_form_submission_heuristic + type: RECORD + - description: | + Successfully started HTTP channels when HTTPS RR is used + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_onstart_success_https_rr + type: RECORD + - description: | + HTTPS RR is presented or not + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_https_rr_presented + type: RECORD + - description: | + Whether an HTTP request gets upgraded to HTTPS because of HTTPS RR + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_https_upgrade_with_https_rr + type: RECORD + - description: | + The reason that `gfx.content.frame_time.from_paint` recorded a slow (>200ms) result, if any. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: gfx_content_frame_time_reason + type: RECORD + - description: | + The count of calls to the native DNS APIs + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_dns_native_count + type: RECORD + - description: | + HTTP protocol version used on response from nsHttp.h + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_response_version + type: RECORD + - description: | + The error that was returned from a failed TLS 1.3 handshake in which the client sent a mlkem768x25519 key share (see tlsIntoleranceTelemetryBucket() in nsNSSIOLayer.cpp). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: tls_xyber_intolerance_reason + type: RECORD + - description: | + The operating system audio backend (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: media_audio_backend + type: RECORD + - description: | + Failure occurs when initializing the audio stream. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: media_audio_init_failure + type: RECORD + - description: | + AV1LayeredImageIndexingProperty (a1lx). (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_a1lx + type: RECORD + - description: | + AVIF OperatingPointSelectorProperty (a1op). (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_a1op + type: RECORD + - description: | + AVIF alpha plane. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_alpha + type: RECORD + - description: | + Image-decode Error from AOM decoder (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_aom_decode_error + type: RECORD + - description: | + Bits per pixel of AVIF image. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_bit_depth + type: RECORD + - description: | + AVIF CICP colour primaries. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_cicp_cp + type: RECORD + - description: | + AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_cicp_mc + type: RECORD + - description: | + AVIF CICP transfer characteristics. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_cicp_tc + type: RECORD + - description: | + AVIF CleanApertureBox (clap). (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_clap + type: RECORD + - description: | + AVIF colour information type. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_colr + type: RECORD + - description: | + Decode result of AVIF image. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_decode_result + type: RECORD + - description: | + Decoder of AVIF image. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_decoder + type: RECORD + - description: | + AVIF AVIF grid-based image. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_grid + type: RECORD + - description: | + AVIF ItemProtectionBox (ipro). (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_ipro + type: RECORD + - description: | + AVIF spatial extents (image size). (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_ispe + type: RECORD + - description: | + AVIF LayerSelectorProperty (lsel). (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_lsel + type: RECORD + - description: | + AVIF pixel aspect ratio. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_pasp + type: RECORD + - description: | + AVIF pixel information (bits per channel). (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_pixi + type: RECORD + - description: | + YUV color space of AVIF image. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: avif_yuv_color_space + type: RECORD + - description: | + The proxies configurations created in the browser session (SOCKSv4, SOCKSv5, HTTP, HTTPS) + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_proxy_info_type + type: RECORD + - description: | + Counts the number of times a given color is used to highlight. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_editing_highlight_color + type: RECORD + - description: | + Counts the number of times a given kind is used to highlight. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_editing_highlight_kind + type: RECORD + - description: | + Counts the number of times a given method is used to highlight. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_editing_highlight_method + type: RECORD + - description: | + Counts the number of different colors used to highlight. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_editing_highlight_number_of_colors + type: RECORD + - description: | + Counts the number of times different CRLite statuses were returned. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cert_verifier_crlite_status + type: RECORD + - description: | + The CipherSuite used for each webrtc DTLS connection, as a string representation of the CipherSuite's ID in 4 hex digits (eg; TLS_DHE_RSA_WITH_AES_128_CBC_SHA would be "0x0033") + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtcdtls_cipher + type: RECORD + - description: | + The result of each webrtc client DTLS handshake as a string containing either the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), SUCCESS for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtcdtls_client_handshake_result + type: RECORD + - description: | + The version of DTLS used for each webrtc connection. Can be 1.0, 1.2, or 1.3 (there is no 1.1 version of DTLS) + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtcdtls_protocol_version + type: RECORD + - description: | + The result of each webrtc server DTLS handshake, as the name of the error code (eg; SSL_ERROR_BAD_CERTIFICATE), the empty string for successful handshakes, ALPN_FAILURE when ALPN negotiation fails, or CERT_FAILURE when cert validation fails. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtcdtls_server_handshake_result + type: RECORD + - description: | + The SRTPProtectionProfile (see RFC 5764) used for each webrtc SRTP connection, as a string representation of the SRTPProtectionProfile's ID in 4 hex digits (eg; SRTP_AES128_CM_HMAC_SHA1_80 would be "0x0001") + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtcdtls_srtp_cipher + type: RECORD + - description: Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: media_playback_not_supported_video_per_mime_type + type: RECORD + - description: | + How much energy (in µWh) has been used, broken down by process type. Only available on Apple Silicon. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: power_energy_per_process_type + type: RECORD + - description: | + Counts how often we purge trackers. Giving a high level overview about the effectivness of bounce tracking protection. Allows determining error rate with failure/success label. When in dry mode, we count the purges that would have happened under the dry label. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: bounce_tracking_protection_purge_count + type: RECORD + - description: | + TLS early data was used and it was accepted or rejected by the remote host. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_tls_early_data_accepted + type: RECORD + - description: | + Sending TLS early data was not possible, possible and used, or possible but not used. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_tls_early_data_negotiated + type: RECORD + - description: | + Count of the HTTP redirection that triggered by subresource, keyed by the URL scheme redirected to + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_redirect_to_scheme_subresource + type: RECORD + - description: | + Count of the HTTP redirection that triggered by top-level document, keyed by the URL scheme redirected to + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_redirect_to_scheme_top_level + type: RECORD + - description: | + The count of translation requests, along with their type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: translations_request_count + type: RECORD + - description: The number of times each certificate compression algorithm returned an error. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cert_compression_failures + type: RECORD + - description: The number of times each certificate compression algorithm was used. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cert_compression_used + type: RECORD + - description: The number of successfully created credentials by authenticator attachment modality. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webauthn_create_authenticator_attachment + type: RECORD + - description: The number of successfully asserted credentials by authenticator attachment modality. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webauthn_get_authenticator_attachment + type: RECORD + - description: | + Amount and error name reported when performing crash submission. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: crash_submission_collector_errors + type: RECORD + - description: | + The metrics for the attribution data stores + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: private_attribution_database + type: RECORD + - description: | + The count of outcomes for the measureConversion API + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: private_attribution_measure_conversion + type: RECORD + - description: | + The count of outcomes for the saveImpression API + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: private_attribution_save_impression + type: RECORD + - description: | + Counts of cacheable/non-cacheable byte-range requests + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_byte_range_request + type: RECORD + - description: | + Channel Disposition for HTTP and HTTPS: cancel, disk, net_ok, net_early_fail, and net_late_fail + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition + type: RECORD + - description: | + Upgrading display content Channel Disposition (key: disabled_no_reason) + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition_disabled_no_reason + type: RECORD + - description: | + Upgrading display content Channel Disposition (key: disable_upgrade) + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition_disabled_upgrade + type: RECORD + - description: | + Upgrading display content Channel Disposition (key: disabled_wont) + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition_disabled_wont + type: RECORD + - description: | + Upgrading display content Channel Disposition (key: enabled_no_reason) + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition_enabled_no_reason + type: RECORD + - description: | + Upgrading display content Channel Disposition (key: enable_upgrade) + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition_enabled_upgrade + type: RECORD + - description: | + Upgrading display content Channel Disposition (key: enabled_wont) + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_disposition_enabled_wont + type: RECORD + - description: | + Whether successfully started HTTP channels + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_channel_onstart_status + type: RECORD + - description: | + Whether a top-level HTTP request gets upgraded to HTTPS and the reason for it + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_to_https_upgrade_reason + type: RECORD + - description: | + HTTP Response Status Code (200, 301, 302, 304, 307, 308, 400, 401, 403, 404, 421, 425, 429, other 400 and 500) + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_response_status_code + type: RECORD + - description: | + HTTP protocol version from Early Hints response + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_eh_response_version + type: RECORD + - description: | + Collecting XHR channel status on error code when statusCode == 0. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: crash_submission_channel_status + type: RECORD + - description: | + Whether the default provider falled back to NetworkGeolocationProvider. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: geolocation_fallback + type: RECORD + - description: | + The result for each geolocation request. Success label will only happen once for each request, even if it's a watch request. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: geolocation_request_result + type: RECORD + - description: | + Counts the specific type of block. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: serp_ads_blocked_count + type: RECORD + - description: | + Which revocation checking mechanisms were used in a TLS handshake? + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cert_verifier_cert_revocation_mechanisms + type: RECORD + - description: | + The OCSP result when CRLite claims a certificate is revoked. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: cert_verifier_crlite_vs_ocsp_result + type: RECORD + - description: | + Number of images added with/without alt text. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: pdfjs_image_added + type: RECORD + - description: | + Counts how many fetch keepalive requests are dropped due to configured resource limits. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_fetch_keepalive_discard_count + type: RECORD + - description: | + Counts how many fetch keepalive requests are made. This counter helps us to understand the adoption of fetch keepalive for firefox. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_fetch_keepalive_request_count + type: RECORD + - description: | + Counts the status of succeeded and failed requests to addons.mozilla.org + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_addon_status + type: RECORD + - description: | + Counts the status of succeeded and failed requests to other mozilla.org domains + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_other_status + type: RECORD + - description: | + Counts the status of succeeded and failed requests to firefox.settings.services.mozilla.com + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_remote_settings_status + type: RECORD + - description: | + Counts the number of succeeded and failed channels with a system principal to a mozilla domain. Label contains ok or failure reason. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_success_or_failure + type: RECORD + - description: | + Counts the status of succeeded and failed requests to incoming.telemetry.mozilla.org + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_telemetry_status + type: RECORD + - description: | + Counts the status of succeeded and failed requests to aus5.mozilla.org + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_update_status + type: RECORD + - description: | + Counts the status of succeeded and failed requests to *.addons.mozilla.org + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_system_channel_addonversion_status + type: RECORD + - description: | + Number of DOH requests per connection keyed by HTTP version + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_trr_request_count_per_conn + type: RECORD + - description: | + Number of paths known to be ECN capable or not-capable. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_3_ecn_path_capability + type: RECORD + - description: | + Gather the outcome of 0-RTT usage: - "not_used": 0RTT_NOT_USED - "succeeded": 0RTT_USED_SUCCESS - "rejected": 0RTT_USED_REJECT - "conn_error": 0RTT_USED_CONN_ERROR - "conn_closed_by_necko": 0RTT_CONN_CLOSED_BY_NECKO + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_http3_0rtt_state + type: RECORD + - description: | + Success / Fail Rates for HTTP3 when a GREASE ECH Extension was sent + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_http3_ech_outcome_grease + type: RECORD + - description: | + Success / Fail Rates for HTTP3 when No ECH Extension was sent + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_http3_ech_outcome_none + type: RECORD + - description: | + Success / Fail Rates for HTTP3 when a 'real' ECH Extension was sent + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: netwerk_http3_ech_outcome_real + type: RECORD + - description: | + The category of the origin that retrieves Notification.permission. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: web_notification_permission_origin + type: RECORD + - description: | + The category of the origin that calls Notification.requestPermission(). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: web_notification_request_permission_origin + type: RECORD + - description: | + The category of the origin that calls new Notification/showNotification(). + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: web_notification_show_origin + type: RECORD + - description: | + The number of times we see the IP address 0.0.0.0 or its IPv6 equivalent. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_ip_addr_any_count + type: RECORD + - description: | + The number of history or bookmark items opened from the Library window This metric was generated to correspond to the Legacy Telemetry scalar library.link. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: library_link + type: RECORD + - description: | + The number of times the Library window was opened, keyed by 'history' or 'bookmarks' This metric was generated to correspond to the Legacy Telemetry scalar library.opened. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: library_opened + type: RECORD + - description: | + The number of history-specific or bookmark-specific searches made from the Library window This metric was generated to correspond to the Legacy Telemetry scalar library.search. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: library_search + type: RECORD + - description: | + The number of history items opened from the History sidebar. This metric was generated to correspond to the Legacy Telemetry scalar sidebar.link. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: sidebar_link + type: RECORD + - description: | + The number of searches from the sidebar, per view (e.g.: bookmarks, history). This metric was generated to correspond to the Legacy Telemetry scalar sidebar.search. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: sidebar_search + type: RECORD + - description: | + Count the number of times the media with a specific mime type (Eg. audio/vorbis, that would be used as the key) encounters a decode error during playback. This metric was generated to correspond to the Legacy Telemetry scalar media.decode_error_per_mime_type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: media_decode_error_per_mime_type + type: RECORD + - description: | + How many KB of HTTP data transferred by type, there are some categories separated by keys based on 5 parameters: + 1. normal browsing or private browsing + 2. system principal or not + 3. first party or third party + 4. class of service (Leader/Background/Others) + 5. tracking classification (Basic/Content/FingerprintingContent) + + Available keys are: + "Y0_N1Sys", + "Y1_N1", + "Y2_N3Oth", + "Y3_N3BasicLead", + "Y4_N3BasicBg", + "Y5_N3BasicOth", + "Y6_N3ContentLead", + "Y7_N3ContentBg", + "Y8_N3ContentOth", + "Y9_N3FpLead", + "Y10_N3FpBg", + "Y11_N3FpOth", + "Y12_P1Sys", + "Y13_P1", + "Y14_P3Oth", + "Y15_P3BasicLead", + "Y16_P3BasicBg", + "Y17_P3BasicOth", + "Y18_P3ContentLead", + "Y19_P3ContentBg", + "Y20_P3ContentOth", + "Y21_P3FpLead", + "Y22_P3FpBg", + "Y23_P3FpOth" + + This metric was generated to correspond to the Legacy Telemetry scalar networking.data_transferred_v3_kb. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_data_transferred_v3_kb + type: RECORD + - description: | + Number of times we cycled the TRR connection during a subsession. Keyed by TRR provider URL. This metric was generated to correspond to the Legacy Telemetry scalar networking.trr_connection_cycle_count. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_trr_connection_cycle_count + type: RECORD + - description: | + The video codec used for receiving video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.recv_codec_used. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtc_video_recv_codec_used + type: RECORD + - description: | + The video codec used for sending video on a WebRTC call. This metric was generated to correspond to the Legacy Telemetry scalar webrtc.video.send_codec_used. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: webrtc_video_send_codec_used + type: RECORD + - description: | + A keyed uint recording how many times the migration wizard detected a browser / profile pair for a particular browser. This is incremented every time the discovery occurs, so multiple openings of the wizard will increase the counts each time. This metric was generated to correspond to the Legacy Telemetry scalar migration.discovered_migrators. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: migration_discovered_migrators + type: RECORD + - description: | + Records counts for when Firefox was invoked (i.e., was already running and was not launched) to handle a file type or protocol with `-osint -url ...`. The result is split into keys which represent the file extension: currently, the set of file types Firefox registers to handle, namely ".avif", ".htm", ".html", ".pdf", ".shtml", ".xht", ".xhtml", ".svg", ".webp", and the set of protocol schemes that Firefox registers to handle, namely "about", "http", "https", "mailto". If Firefox was invoked to handle a file type or protocol it does not register to handle by default, the count is recorded as "." or "", respectively (neither of which are valid extension or protocol identifiers). This metric was generated to correspond to the Legacy Telemetry scalar os.environment.invoked_to_handle. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: os_environment_invoked_to_handle + type: RECORD + - description: | + Records counts for when Firefox was launched afresh (i.e., was not already running) to handle a file type or protocol with `-osint -url ...`. The result is split into keys which represent the file extension: currently, the set of file types Firefox registers to handle, namely ".avif", ".htm", ".html", ".pdf", ".shtml", ".xht", ".xhtml", ".svg", ".webp", and the set of protocol schemes that Firefox registers to handle, namely "about", "http", "https", "mailto". If Firefox was launched to handle a file type or protocol it does not register to handle by default, the count is recorded as "." or "", respectively (neither of which are valid extension or protocol identifiers). This metric was generated to correspond to the Legacy Telemetry scalar os.environment.launched_to_handle. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: os_environment_launched_to_handle + type: RECORD + - description: | + Measures how many servers have requested a client authentication certificate (key: "requested") and how many times the user has opted to send one in response (key: "sent"). This metric was generated to correspond to the Legacy Telemetry scalar security.client_auth_cert_usage. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: security_client_auth_cert_usage + type: RECORD + - description: | + A counter incremented every time the user encounters an error printing. The result is split into keys which represent the values of error codes related to printing. Possible values are listed in 'keys'. "FAILURE" is a catch-all code for an error we don't recognize. This metric was generated to correspond to the Legacy Telemetry scalar printing.error. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: printing_error + type: RECORD + - description: | + A count of how many times the user changed a setting in print preview, broken down per setting. This metric was generated to correspond to the Legacy Telemetry scalar printing.settings_changed. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: printing_settings_changed + type: RECORD + - description: | + A counter incremented every time the user prints to a certain target type. The 'pdf_unknown' count is for printers with names that we don't know about/check for, but that have 'pdf' in their name, and is mainly a sanity check that we're not missing significant counts in 'pdf_file'. For the most part, the 'unknown' count will be prints to a physical printer, but we can't know for sure since third party drivers could also be print to file drivers that we don't otherwise catch in the other counts. This metric was generated to correspond to the Legacy Telemetry scalar printing.target_type. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: printing_target_type + type: RECORD + - description: | + The count URI loads triggered in a subsession from about:home, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.about_home. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_about_home + type: RECORD + - description: | + The count URI loads triggered in a subsession from about:newtab, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.about_newtab. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_about_newtab + type: RECORD + - description: | + The count URI loads triggered in a subsession from the contextmenu, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.contextmenu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_contextmenu + type: RECORD + - description: | + The count URI loads triggered in a subsession from the searchbar, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.searchbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_searchbar + type: RECORD + - description: | + The count URI loads triggered in a subsession from the urlbar, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.urlbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_urlbar + type: RECORD + - description: | + The count URI loads triggered in a subsession from the urlbar via handoff, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.urlbar_handoff. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_urlbar_handoff + type: RECORD + - description: | + The count of URI loads triggered in a subsession from the urlbar after the search term was shown in the urlbar, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.urlbar_persisted. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_urlbar_persisted + type: RECORD + - description: | + The count URI loads triggered in a subsession from the urlbar's search mode, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.urlbar_searchmode. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_urlbar_searchmode + type: RECORD + - description: | + The count URI loads triggered in a subsession from a webextension. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.navigation.webextension. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_navigation_webextension + type: RECORD + - description: | + Records clicks of adverts on SERP pages where the search was started from about:home. The key format is ‘:’ See https://firefox-source- docs.mozilla.org/browser/search/telemetry.html#browser-search- content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.about_home. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_about_home + type: RECORD + - description: | + Records clicks of adverts on SERP pages where the search was started from about:newtab. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.about_newtab. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_about_newtab + type: RECORD + - description: | + Records clicks of adverts on SERP pages where the search was started from the context menu. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.contextmenu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_contextmenu + type: RECORD + - description: | + Records clicks of adverts on SERP pages where the search was loaded by reloading the page. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.reload. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_reload + type: RECORD + - description: | + Records clicks of adverts on SERP pages where the search was started from the search bar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.searchbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_searchbar + type: RECORD + - description: | + Records clicks of adverts on SERP pages where the search was started from the system, e.g. command line. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.system. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_system + type: RECORD + - description: | + Records clicks of adverts on SERP pages where the search was loaded from the tab history. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.tabhistory. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_tabhistory + type: RECORD + - description: | + Records clicks of adverts on SERP pages where the search was started from a place not categorized by the other scalars. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.unknown. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_unknown + type: RECORD + - description: | + Records clicks of adverts on SERP pages where the search was started from the urlbar. The key format is ‘:’ See https://firefox-source- docs.mozilla.org/browser/search/telemetry.html#browser-search- content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.urlbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_urlbar + type: RECORD + - description: | + The count URI loads triggered in a subsession from the urlbar via handoff, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.urlbar_handoff. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_urlbar_handoff + type: RECORD + - description: | + Records clicks of adverts on SERP pages where the search was started from the urlbar after the search term was shown in the urlbar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.urlbar_persisted. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_urlbar_persisted + type: RECORD + - description: | + Records clicks of adverts on SERP pages where the search was started from the urlbar in search mode. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.urlbar_searchmode. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_urlbar_searchmode + type: RECORD + - description: | + Records clicks of adverts on SERP pages where the search was started from a webextension. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.adclicks.webextension. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_adclicks_webextension + type: RECORD + - description: | + Records counts for in-content searches where the search was most likely started from the about:home. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.about_home. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_about_home + type: RECORD + - description: | + Records counts for in-content searches where the search was most likely started from the about:newtab. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.about_newtab. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_about_newtab + type: RECORD + - description: | + Records counts for in-content searches where the search was most likely started from the context menu. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.contextmenu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_contextmenu + type: RECORD + - description: | + Records counts for in-content searches where the search was loaded by reloading the page. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.reload. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_reload + type: RECORD + - description: | + Records counts for in-content searches where the search was most likely started from the search bar. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.searchbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_searchbar + type: RECORD + - description: | + Records counts for in-content searches where the search was most likely started from the system, e.g. command line. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.system. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_system + type: RECORD + - description: | + Records counts for in-content searches where the search was loaded from the tab history. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.tabhistory. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_tabhistory + type: RECORD + - description: | + Records counts for in-content searches where the search was started from a place that could not be determined or not categorized by the other scalars. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.unknown. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_unknown + type: RECORD + - description: | + Records counts for in-content searches where the search was most likely started from the urlbar. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.urlbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_urlbar + type: RECORD + - description: | + The count URI loads triggered in a subsession from the urlbar via handoff, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.urlbar_handoff. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_urlbar_handoff + type: RECORD + - description: | + Records counts for in-content searches where the search was most likely started from the urlbar after the search term was shown in the urlbar. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.urlbar_persisted. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_urlbar_persisted + type: RECORD + - description: | + Records counts for in-content searches where the search was most likely started from the urlbar in search mode. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.urlbar_searchmode. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_urlbar_searchmode + type: RECORD + - description: | + Records counts for in-content searches where the search was most likely started from a webextension. The key format is :[tagged|tagged-follow-on|organic]:[code|other|none] See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.content.webextension. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_content_webextension + type: RECORD + - description: | + Records counts of SERP pages with adverts displayed where the search was started from about:home. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.about_home. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_about_home + type: RECORD + - description: | + Records counts of SERP pages with adverts displayed where the search was started from about:newtab. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.about_newtab. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_about_newtab + type: RECORD + - description: | + Records counts of SERP pages with adverts displayed where the search was started from the context menu. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.contextmenu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_contextmenu + type: RECORD + - description: | + Records counts of SERP pages with adverts displayed where the search was loaded by reloading the page. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.reload. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_reload + type: RECORD + - description: | + Records counts of SERP pages with adverts displayed where the search was started from the search bar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.searchbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_searchbar + type: RECORD + - description: | + Records counts of SERP pages with adverts displayed where the search was started from the system, e.g. command line. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.system. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_system + type: RECORD + - description: | + Records counts of SERP pages with adverts displayed where the search was loaded from the tab history. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.tabhistory. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_tabhistory + type: RECORD + - description: | + Records counts of SERP pages with adverts displayed where the search was started from a place not categorized by the other scalars. The key format is ‘:’ See https://firefox- source-docs.mozilla.org/browser/search/telemetry.html#browser- search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.unknown. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_unknown + type: RECORD + - description: | + Records counts of SERP pages with adverts displayed where the search was started from the urlbar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.urlbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_urlbar + type: RECORD + - description: | + The count URI loads triggered in a subsession from the urlbar via handoff, broken down by the originating action. This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.urlbar_handoff. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_urlbar_handoff + type: RECORD + - description: | + Records counts of SERP pages with adverts displayed where the search was started from the urlbar after the search term was shown in the urlbar. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.urlbar_persisted. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_urlbar_persisted + type: RECORD + - description: | + Records counts of SERP pages with adverts displayed where the search was started from the urlbar in search mode. The key format is ‘:’ See https://firefox-source-docs.mozilla.org/browser/search/telemetry.html#browser-search-content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.urlbar_searchmode. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_urlbar_searchmode + type: RECORD + - description: | + Records counts of SERP pages with adverts displayed where the search was started from a webextension. The key format is ‘:’ See https://firefox-source- docs.mozilla.org/browser/search/telemetry.html#browser-search- content This metric was generated to correspond to the Legacy Telemetry scalar browser.search.withads.webextension. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_search_withads_webextension + type: RECORD + - description: | + Records a count of interactions with items in the app menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.app_menu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_app_menu + type: RECORD + - description: | + Records a count of interactions with items in the bookmarks bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.bookmarks_bar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_bookmarks_bar + type: RECORD + - description: | + Records a count of interactions with items in the content context menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.content_context. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_content_context + type: RECORD + - description: | + Records a count of interactions with items in the menu bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.menu_bar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_menu_bar + type: RECORD + - description: | + Records a count of interactions with items in the nav bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.nav_bar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_nav_bar + type: RECORD + - description: | + Records a count of interactions with items in the overflow menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.overflow_menu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_overflow_menu + type: RECORD + - description: | + Records a count of interactions with page action items in the panel. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.pageaction_panel. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_pageaction_panel + type: RECORD + - description: | + Records a count of interactions with page action items in the url bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.pageaction_urlbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_pageaction_urlbar + type: RECORD + - description: | + Records a count of interactions with items in the pinned area of the overflow menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.pinned_overflow_menu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_pinned_overflow_menu + type: RECORD + - description: | + Records the items interacted with in the Containers section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneContainers. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_containers + type: RECORD + - description: | + Records the items interacted with in the Experimental section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneExperimental. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_experimental + type: RECORD + - description: | + Records the items interacted with in the General section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneGeneral. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_general + type: RECORD + - description: | + Records the items interacted with in the Home section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneHome. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_home + type: RECORD + - description: | + Records the items interacted with in the More From Mozilla section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneMoreFromMozilla. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_more_from_mozilla + type: RECORD + - description: | + Records the items interacted with in the Privacy section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_panePrivacy. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_privacy + type: RECORD + - description: | + Records the items interacted with in the Search section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneSearch. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_search + type: RECORD + - description: | + Records the items interacted with in the Search results section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneSearchResults. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_search_results + type: RECORD + - description: | + Records the items interacted with in the Sync section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneSync. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_sync + type: RECORD + - description: | + Records the items interacted with in any other section of preferences. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.preferences_paneUnknown. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_preferences_pane_unknown + type: RECORD + - description: | + Records a count of interactions with items in the tab bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.tabs_bar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_tabs_bar + type: RECORD + - description: | + Records a count of interactions with items in the tab context menu. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.tabs_context. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_tabs_context + type: RECORD + - description: | + Records a count for each entrypoint (the container of the trigger node) when an item from the tabs context menu is selected. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.tabs_context_entrypoint. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_tabs_context_entrypoint + type: RECORD + - description: | + Records a count of interactions with items in the Unified Extensions area. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.unified_extensions_area. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_unified_extensions_area + type: RECORD + - description: | + Records a count of interactions with items in the vertical tab bar. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.vertical_tabs_container. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_vertical_tabs_container + type: RECORD + - description: | + Collect precise set of error code and calling site upon process creation failure path. This metric was generated to correspond to the Legacy Telemetry scalar dom.parentprocess.process_launch_errors. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: dom_parentprocess_process_launch_errors + type: RECORD + - description: | + For each successful scoring, count whether the relevance score gets boosted or decreased over the original score. Note that given how the score is calculated, it's practically impossible to have the two scores tied. If that's the case anyhow, it will increment the "boosted" counter. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: suggest_relevance_outcome + type: RECORD + - description: | + Count the successful / failed attempts of relevance scoring in Firefox Suggest. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: suggest_relevance_status + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after selecing the Search Bookmarks menu item in the Library menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.bookmarkmenu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_bookmarkmenu + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after being handed off from the search bar on the new tab page. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.handoff. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_handoff + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after selecing the Search History menu item in a History menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.historymenu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_historymenu + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after selecting a keyword offer result. The scalar key for local search modes entered using a restrict keyword will be suffixed with "keyword". For example: tabs_keyword, bookmarks_keyword, history_keyword, and actions_keyword. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.keywordoffer. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_keywordoffer + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after selecting a one-off. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.oneoff. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_oneoff + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode from an unknown entry point. If values appear for this probe in Telemetry, we should review the entry points to search mode. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.other. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_other + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode by unified search button. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.searchbutton. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_searchbutton + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after pressing a keyboard shortcut. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.shortcut. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_shortcut + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after selecting the Search Tabs menu item in the Tab Overflow menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.tabmenu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_tabmenu + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after selecting a tab-to-search result. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.tabtosearch. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_tabtosearch + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after selecting a tab-to-search onboarding result. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.tabtosearch_onboard. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_tabtosearch_onboard + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after selecting a search shortcut Top Site on the New Tab Page. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.topsites_newtab. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_topsites_newtab + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after selecting a search shortcut Top Site in the Urlbar. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.topsites_urlbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_topsites_urlbar + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after selecting a search shortcut on the macOS Touch Bar. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.touchbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_touchbar + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode after typing an alias. The scalar keys for local search modes entered by typing a restrict keyword will be suffixed with "keyword". For example: tabs_keyword, bookmarks_keyword, history_keyword, and actions_keyword. If instead search mode was entered by typing a restrict symbol the key will be suffixed with "symbol" (e.g. typing "%" will generate "tabs_symbol"). This metric was generated to correspond to the Legacy Telemetry scalar urlbar.searchmode.typed. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_searchmode_typed + type: RECORD + - description: | + Records when widgets are added, removed or moved in the UI. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.customized_widgets. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_customized_widgets + type: RECORD + - description: | + Records a count of how many times the All Tabs Panel was opened, keyed on a string describing the entrypoint. This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.all_tabs_panel_entrypoint. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_all_tabs_panel_entrypoint + type: RECORD + - description: | + Records a count of interactions with keyboard shortcuts. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.interaction.keyboard. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_ui_interaction_keyboard + type: RECORD + - description: | + Number of HTTP3 connections closed, labeled by reason. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: networking_http_3_connection_close_reason + type: RECORD + - description: | + Which content encoding is being used for push. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: web_push_content_encoding + type: RECORD + - description: | + The code indicating why the push message couldn't be processed. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: web_push_error_code + type: RECORD + - description: | + Whether we show about:sessionrestore or not. Split by key, which indicates why we showed the item or not. Specifically, 'deferred_restore' means we didn't autorestore and thus didn't show the interstitial; 'autorestore' indicates we autorestored without showing the interstitial. 'shown_old_session', 'shown_only_about_welcomeback', 'shown_many_crashes', 'shown_many_crashes_old_session' all indicate we did show the interstitial because of a crash, and the text after 'shown' indicates what secondary reason there was to show this page (as we don't show it for 'just' one crash). This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.sessionrestore_interstitial. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: browser_engagement_sessionrestore_interstitial + type: RECORD + - description: | + Counts how many times an about-page autofill result (e.g., "about:config") was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.autofill_about. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_autofill_about + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.autofill_adaptive. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_autofill_adaptive + type: RECORD + - description: | + Counts how many times an origin (domain) autofill result (e.g., "mozilla.org") was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.autofill_origin. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_autofill_origin + type: RECORD + - description: | + Counts how many times some other type of autofill result that does not have a specific keyed scalar was picked at a given index. This is a fallback that is used when the code is not properly setting a specific autofill type, and it should not normally be used. If it appears in the data, it means we need to investigate and fix the code that is not properly setting a specific autofill type. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.autofill_other. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_autofill_other + type: RECORD + - description: | + Counts how many times a URL autofill result (e.g., "mozilla.org/firefox") was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.autofill_url. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_autofill_url + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.bookmark. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_bookmark + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.bookmark_adaptive. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_bookmark_adaptive + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.clipboard. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_clipboard + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.dynamic. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_dynamic + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.dynamic_wikipedia. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_dynamic_wikipedia + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.extension. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_extension + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.formhistory. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_formhistory + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.history. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_history + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.history_adaptive. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_history_adaptive + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.keyword. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_keyword + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.navigational. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_navigational + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.quickaction. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_quickaction + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.quicksuggest. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_quicksuggest + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.recent_search. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_recent_search + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.remotetab. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_remotetab + type: RECORD + - description: | + Counts how many times this restrict actions result was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.restrict_keyword_actions. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_restrict_keyword_actions + type: RECORD + - description: | + Counts how many times this restrict bookmarks result was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.restrict_keyword_bookmarks. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_restrict_keyword_bookmarks + type: RECORD + - description: | + Counts how many times this restrict history result was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.restrict_keyword_history. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_restrict_keyword_history + type: RECORD + - description: | + Counts how many times this restrict tabs result was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.restrict_keyword_tabs. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_restrict_keyword_tabs + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchengine. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchengine + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode from the Search Bookmarks menu item in the Library menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.bookmarkmenu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_bookmarkmenu + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by being handed off from the search bar on the new tab page. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.handoff. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_handoff + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode from the Search History menu item in a History menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.historymenu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_historymenu + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a keyword offer result. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.keywordoffer. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_keywordoffer + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a one-off. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.oneoff. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_oneoff + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode from an unknown entry point. If values appear for this probe in Telemetry, we should review the entry points to search mode. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.other. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_other + type: RECORD + - description: | + A keyed uint recording how many times the user entered a particular search mode by unified search button. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.searchbutton. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_searchbutton + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by pressing a keyboard shortcut. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.shortcut. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_shortcut + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting the Search Tabs menu item in the Tab Overflow menu. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.tabmenu. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_tabmenu + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a tab-to-search result. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.tabtosearch. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_tabtosearch + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a tab-to-search onboarding result. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.tabtosearch_onboard. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_tabtosearch_onboard + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a search shortcut Top Site on the New Tab Page. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.topsites_newtab. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_topsites_newtab + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a search shortcut Top Site in the Urlbar. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.topsites_urlbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_topsites_urlbar + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by selecting a search shortcut on the macOS Touch Bar. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.touchbar. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_touchbar + type: RECORD + - description: | + A keyed uint recording how many times the user picked a particular kind of result while in search mode after entering search mode by typing an alias. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchmode.typed. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchmode_typed + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchsuggestion. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchsuggestion + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.searchsuggestion_rich. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_searchsuggestion_rich + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.switchtab. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_switchtab + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.tabtosearch. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_tabtosearch + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.tip. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_tip + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.topsite. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_topsite + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.trending. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_trending + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.trending_rich. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_trending_rich + type: RECORD + - description: | + Counts how many times an unknown result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.unknown. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_unknown + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.visiturl. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_visiturl + type: RECORD + - description: | + Counts how many times this result type was picked at a given index. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.picked.weather. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_picked_weather + type: RECORD + - description: | + A keyed uint recording how many times non-onboarding tab-to-search results are shown in the Urlbar for a particular search engine. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.tabtosearch.impressions. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_tabtosearch_impressions + type: RECORD + - description: | + A keyed uint recording how many times onboarding tab-to-search results are shown in the Urlbar for a particular search engine. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.tabtosearch.impressions_onboarding. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_tabtosearch_impressions_onboarding + type: RECORD + - description: | + A keyed uint recording how many times particular tips are shown in the Urlbar and how often their confirm and help buttons are pressed. This metric was generated to correspond to the Legacy Telemetry scalar urlbar.tips. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: urlbar_tips + type: RECORD + - description: | + Hit/Miss count split by cache size in file count Hit 0-5000, Miss 0-5000, Hit 5001-10000, ... + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: network_cache_hit_miss_stat_per_cache_size + type: RECORD + mode: NULLABLE + name: labeled_counter + type: RECORD + - fields: + - description: | + The size of pings that exceeded the maximum ping size allowed for upload. + fields: + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: glean_upload_discarded_exceeding_pings_size + type: RECORD + - description: | + The size of the pending pings directory upon initialization of Glean. + This does not include the size of the deletion request pings directory. + fields: + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: glean_upload_pending_pings_directory_size + type: RECORD + - description: | + The size of the database file at startup. + fields: + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: glean_database_size + type: RECORD + - description: | + The number and size of the IPC buffers being received over FOG IPC. + fields: + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: fog_ipc_buffer_sizes + type: RECORD + - description: | + Amount of data read from the DNR startup cache file. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_apis_dnr_startup_cache_read_size + type: RECORD + - description: | + Amount of data written to the DNR startup cache file. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_apis_dnr_startup_cache_write_size + type: RECORD + - description: | + Size of deserialized data, in bytes + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_clone_deserialize_size + type: RECORD + - description: | + The total uncompressed size of all profile data included in a completed backup. To reduce fingerprintability, we round to the nearest 1 mebibyte. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: browser_backup_total_backup_size + type: RECORD + - description: | + The total compressed size of a single-file profile data backup archive. To reduce fingerprintability, we round to the nearest 1 mebibyte. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: browser_backup_compressed_archive_size + type: RECORD + - description: Size of the metadata in bytes parsed from the disk. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cache_metadata_size + type: RECORD + - description: | + Heap memory used by cert_storage. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_storage_memory + type: RECORD + - description: | + HTTP3 UDP datagram size received. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_udp_datagram_segment_size_received + type: RECORD + - description: | + HTTP3 UDP datagram segment size sent. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_udp_datagram_segment_size_sent + type: RECORD + - description: | + HTTP3 UDP datagram size received. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_udp_datagram_size_received + type: RECORD + mode: NULLABLE + name: memory_distribution + type: RECORD + - fields: + - description: | + The optional reason the ping was submitted. + The specific values for reason are specific to each ping, and are + documented in the ping's pings.yaml file. + mode: NULLABLE + name: ping_reason + type: STRING + - description: | + The Buildid of the Gecko engine, example: 20200205124310 Mirror of `geckoview.build_id` for validation of migrated data. + mode: NULLABLE + name: geckoview_validation_build_id + type: STRING + - description: | + The version of the Gecko engine, example: 74.0a1 Mirror of `geckoview.version` for validation of migrated data. + mode: NULLABLE + name: geckoview_validation_version + type: STRING + - description: | + The display name of the user's default engine. + mode: NULLABLE + name: search_engine_default_display_name + type: STRING + - description: | + The telemetry id of the search engine. + For application provided engines, this is either supplied by the + configuration or from the first part of the associated WebExtension Id. + For other engines, this is `other-`. + mode: NULLABLE + name: search_engine_default_engine_id + type: STRING + - description: | + A path relating to where the search engine was installed/loaded from. + For example: + `[addon]` for a WebExtension based + engine. + `[https]developer.mozilla.org/mdn-web-docs.xml` for an OpenSearch based + engine. + Note: this metric is truncated at 100 characters. + mode: NULLABLE + name: search_engine_default_load_path + type: STRING + - description: | + The verified status of the search engine. + For application provided engines, this will always be `default`. + For other engines this will either be `verified` or `unverified` depending + on if the loadPathHash is valid. + mode: NULLABLE + name: search_engine_default_verified + type: STRING + - description: | + The display name of the user's default engine. + If this string is an empty string (`""`), this means that one or both of + the preferences `browser.search.separatePrivateDefault` and + `browser.search.separatePrivateDefault.ui.enabled` are set to false. + It is possible that the user selects the same private engine as for the + default engine, and hence both versions of these fields will be filled in. + mode: NULLABLE + name: search_engine_private_display_name + type: STRING + - description: | + The telemetry id of the search engine. + For application provided engines, this is either supplied by the + configuration or from the first part of the associated WebExtension Id. + For other engines, this is `other-`. + If this string is an empty string (`""`), this means that one or both of + the preferences `browser.search.separatePrivateDefault` and + `browser.search.separatePrivateDefault.ui.enabled` are set to false. + It is possible that the user selects the same private engine as for the + default engine, and hence both versions of these fields will be filled in. + mode: NULLABLE + name: search_engine_private_engine_id + type: STRING + - description: | + A path relating to where the search engine was installed/loaded from. + For example: + `[addon]` for a WebExtension based + engine. + `[https]developer.mozilla.org/mdn-web-docs.xml` for an OpenSearch based + engine. + Note: this metric is truncated at 100 characters. + If this string is an empty string (`""`), this means that one or both of + the preferences `browser.search.separatePrivateDefault` and + `browser.search.separatePrivateDefault.ui.enabled` are set to false. + It is possible that the user selects the same private engine as for the + default engine, and hence both versions of these fields will be filled in. + mode: NULLABLE + name: search_engine_private_load_path + type: STRING + - description: | + The verified status of the search engine. + For application provided engines, this will always be `default`. + For other engines this will either be `verified` or `unverified` depending + on if the loadPathHash is valid. + If this string is an empty string (`""`), this means that one or both of + the preferences `browser.search.separatePrivateDefault` and + `browser.search.separatePrivateDefault.ui.enabled` are set to false. + It is possible that the user selects the same private engine as for the + default engine, and hence both versions of these fields will be filled in. + mode: NULLABLE + name: search_engine_private_verified + type: STRING + - description: | + The source of the RemoteSettings attachment that holds the bloom filter. Possible values are "dump_match", "cache_match", "remote_match","dump_fallback", "cache_fallback", "unknown". "dump_match", "cache_match" and "remote_match" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: "dump" means packaged with the application, "remote" means a freshly downloaded bloomfilter, "cache" means a previously downloaded bloomfilter. "dump_fallback" and "cache_fallback" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). "unknown" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies. + mode: NULLABLE + name: blocklist_mlbf_source + type: STRING + - description: | + SHA1 cryptographic hash of the quarantined domains string pref. + mode: NULLABLE + name: extensions_quarantined_domains_listhash + type: STRING + - description: | + SHA1 cryptographic hash of the quarantined domains string pref as it was set based on the value got synced from the RemoteSettings collection. AMRemoteSettings will be re-processing the entries on the next application startup and so this metric lifetime can be set to application and expect it to be always set to the value got from the RemoteSettings collection. + mode: NULLABLE + name: extensions_quarantined_domains_remotehash + type: STRING + - description: | + An experimentation identifier derived and provided by the application + for the purpose of experimentation enrollment. + mode: NULLABLE + name: glean_client_annotation_experimentation_id + type: STRING + - description: | + If there was an error loading the RKV database, record it. + mode: NULLABLE + name: glean_database_rkv_load_error + type: STRING + - description: | + Current status of the GPU process feature + mode: NULLABLE + name: gpu_process_feature_status + type: STRING + - description: | + Long form description of the Graphics adapter (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_adapter_primary_description + type: STRING + - description: | + Graphics adapter device identification (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_adapter_primary_device_id + type: STRING + - description: | + Graphics adapter driver date (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_adapter_primary_driver_date + type: STRING + - description: | + List of graphics adapter driver files (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_adapter_primary_driver_files + type: STRING + - description: | + Graphics adapter driver vendor identification (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_adapter_primary_driver_vendor + type: STRING + - description: | + Graphics adapter driver version (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_adapter_primary_driver_version + type: STRING + - description: | + Graphics adapter subsystem identification (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_adapter_primary_subsystem_id + type: STRING + - description: | + Graphics adapter vendor identification (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_adapter_primary_vendor_id + type: STRING + - description: | + Whether webrender is enabled or disabled, and why. (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_feature_webrender + type: STRING + - description: | + Name of the graphics compositor in use. Possible values are "opengl, d3d11, client, webrender or basic" (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_status_compositor + type: STRING + - description: | + The gecko version at the last time a compositor was initialized, and therefore when gfx_status_compositor was last updated. Due to gfx_status_compositor's user lifetime we see lots of unexpected values for the current gecko version. We believe this is because the user has not opened a tab since they were updated to a version where webrender should be enabled on their device. This can be used to verify that theory. (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_status_last_compositor_gecko_version + type: STRING + - description: | + The Buildid of the Gecko engine, example: 20200205124310 (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gecko_build_id + type: STRING + - description: | + The version of the Gecko engine, example: 74.0a1 (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gecko_version + type: STRING + - description: | + Only sent if unable to collect firstSeen data. Can have value "NotFoundError" if file not found or other values depending on the failure reason. + mode: NULLABLE + name: installation_first_seen_failure_reason + type: STRING + - description: | + The type of installer used to install Firefox. The value is one of "stub", "full", or "msix" + mode: NULLABLE + name: installation_first_seen_installer_type + type: STRING + - description: | + The application version installed by the installer (not necessarily the current version) + mode: NULLABLE + name: installation_first_seen_version + type: STRING + - description: | + Indicates id of activated chatbot provider or "custom" or "none" + mode: NULLABLE + name: genai_chatbot_provider + type: STRING + - description: | + Setting for sidebar display (either "always" or "hide"). + mode: NULLABLE + name: sidebar_display_settings + type: STRING + - description: | + Setting for sidebar position (either "left" or "right"). + mode: NULLABLE + name: sidebar_position_settings + type: STRING + - description: | + Setting for tabs orientation (either "horizontal" or "vertical"). + mode: NULLABLE + name: sidebar_tabs_layout + type: STRING + - description: | + The source of the RemoteSettings attachment that holds the bloom filter. Possible values are "dump_match", "cache_match", "remote_match","dump_fallback", "cache_fallback", "unknown". "dump_match", "cache_match" and "remote_match" are expected known-good values, and means that the loaded bloomfilter matches the blocklist record in the RemoteSettings collection. The prefix denotes the immediate source of the loaded data: "dump" means packaged with the application, "remote" means a freshly downloaded bloomfilter, "cache" means a previously downloaded bloomfilter. "dump_fallback" and "cache_fallback" means that the last known bloomfilter was used, despite it not matching the latest record in the RemoteSettings collection. In this case the outdated bloomfilter is used as a fallback (e.g. because the latest version cannot be downloaded). "unknown" means that the bloomfilter cannot be loaded at all. This can happen if the blocklist is disabled via preferences or enterprise policies. + mode: NULLABLE + name: blocklist_mlbf_softblocks_source + type: STRING + - description: | + The leaf name and version number of the binary for the process responsible for remotely instantiating a11y. This metric was generated to correspond to the Legacy Telemetry scalar a11y.instantiators. + mode: NULLABLE + name: a11y_instantiators + type: STRING + - description: | + Windowing protocol on Linux. Can be Wayland, WaylandDRM, XWayland, or X11 This metric was generated to correspond to the Legacy Telemetry scalar gfx.linux_window_protocol. + mode: NULLABLE + name: gfx_linux_window_protocol + type: STRING + - description: | + Indicates what sources the OS is currently configured to allow apps to be installed from. Possible values are "Anywhere", "Recommendations", "PreferStore", "StoreOnly", "NoSuchFeature", or "Error". "Recommendations" allows installs from anywhere, but recommends a comparable app from the store, if available. "NoSuchFeature" will be reported on versions of Windows that do not have an app source setting. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.allowed_app_sources. + mode: NULLABLE + name: os_environment_allowed_app_sources + type: STRING + - description: | + Records how Firefox was started on Windows. Currently will be one of "Desktop", "DesktopPrivate", "StartMenu" (including pins), "StartMenuPrivate", "Taskbar", "TaskbarPrivate", "OtherShortcut", or "Other" This metric was generated to correspond to the Legacy Telemetry scalar os.environment.launch_method. + mode: NULLABLE + name: os_environment_launch_method + type: STRING + - description: | + The version of the profiles.ini database loaded during startup. A value of "0" is used to indicate that no file was present during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_database_version. + mode: NULLABLE + name: startup_profile_database_version + type: STRING + - description: |- + How the profile was selected during startup. One of the following reasons: + unknown: + Generally should not happen, set as a default in case no other reason + occured. + profile-manager: + The profile was selected by the profile manager. + profile-selector: + The profile was selected by the profile selector window. + profile-reset: + The profile was selected for reset, normally this would mean a restart. + restart: + The user restarted the application, the same profile as previous will + be used. + argument-profile: + The profile was selected by the --profile command line argument. + argument-p: + The profile was selected by the -p command line argument. + firstrun-claimed-default: + A first run of a dedicated profiles build chose the old default + profile to be the default for this install. + firstrun-skipped-default: + A first run of a dedicated profiles build skipped over the old default + profile and created a new profile. + restart-claimed-default: + A first run of a dedicate + mode: NULLABLE + name: startup_profile_selection_reason + type: STRING + - description: | + The version of Gtk 3 in use. This metric was generated to correspond to the Legacy Telemetry scalar widget.gtk_version. + mode: NULLABLE + name: widget_gtk_version + type: STRING + mode: NULLABLE + name: string + type: RECORD + - fields: + - description: | + Time the FOG initialization takes. + fields: + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: NULLABLE + name: fog_initialization + type: RECORD + - description: | + Time to load and deserialize the extensions startupCache data. + fields: + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: NULLABLE + name: extensions_startup_cache_load_time + type: RECORD + - description: | + The amount of time it took in milliseconds to produce the list of migrators and profiles for the first time the migration wizard opened during the process lifetime. This metric was generated to correspond to the Legacy Telemetry scalar migration.time_to_produce_migrator_list. + fields: + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: NULLABLE + name: migration_time_to_produce_migrator_list + type: RECORD + - description: | + The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task. + fields: + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: NULLABLE + name: networking_loading_certs_task + type: RECORD + - description: | + The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization. + fields: + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: NULLABLE + name: networking_nss_initialization + type: RECORD + mode: NULLABLE + name: timespan + type: RECORD + - fields: + - description: | + The hour of the first run of the application. + mode: NULLABLE + name: glean_validation_first_run_hour + type: STRING + - description: | + Last time the background update was triggered. + mode: NULLABLE + name: background_update_time_last_update_scheduled + type: STRING + - description: | + Keep track of the last time the "addons-bloomfilters" remotesetting blocklist has been successfully updated. + mode: NULLABLE + name: blocklist_last_modified_rs_addons_mblf + type: STRING + - description: | + Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection. + mode: NULLABLE + name: blocklist_mlbf_generation_time + type: STRING + - description: | + Keep track of the timestamp of the most recent stash of the addons blocklist. + mode: NULLABLE + name: blocklist_mlbf_stash_time_newest + type: STRING + - description: | + Keep track of the timestamp of the oldest stash of the addons blocklist. + mode: NULLABLE + name: blocklist_mlbf_stash_time_oldest + type: STRING + - description: | + Keep track of the generation time of the addon blocklist's bloom filter. This marks the point in time until which signed add-ons are recognized by the selected bloom filter from the addons-bloomfilters collection. + mode: NULLABLE + name: blocklist_mlbf_softblocks_generation_time + type: STRING + mode: NULLABLE + name: datetime + type: RECORD + - fields: + - description: | + The length of time between asking the child processes for their + IPC buffers and all of them being received by the parent. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: fog_ipc_flush_durations + type: RECORD + - description: | + The time to build a Gecko display list. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: paint_build_displaylist_time + type: RECORD + - description: | + The time to rasterize glyphs for consumption by WebRender. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: wr_rasterize_glyphs_time + type: RECORD + - description: | + The time to rasterize glyphs for consumption by WebRender. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: wr_framebuild_time + type: RECORD + - description: | + WebRender scene build time. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: wr_scenebuild_time + type: RECORD + - description: | + WebRender scene swap time. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: wr_sceneswap_time + type: RECORD + - description: | + The time to rasterize blobs for consumption by WebRender. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: wr_rasterize_blobs_time + type: RECORD + - description: | + The time spent waiting for the GPU to complete previously issued drawing commands. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: wr_gpu_wait_time + type: RECORD + - description: | + WebRender renderer time. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: wr_renderer_time + type: RECORD + - description: | + Time taken by WebRender to update the texture cache. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: wr_texture_cache_update_time + type: RECORD + - description: | + Time elapsed between the construction of a transaction and the associated frame build beginning. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: wr_time_to_frame_build + type: RECORD + - description: | + Time elapsed between the construction of a frame and the start of rendering. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: wr_time_to_render_start + type: RECORD + - description: | + WebRender renderer time excluding frames in which shader compilation took place. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: wr_renderer_time_no_sc + type: RECORD + - description: | + The time spent from HttpChannelChild::AsyncOpen to adding the transaction to the nsHttpConnectionMgr + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: network_open_to_transaction_pending + type: RECORD + - description: | + Counts how long it takes to handle cookie banners successfully from DOMContentLoaded until click. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cookie_banners_click_handle_duration + type: RECORD + - description: | + Time needed for a failed send of a ping to the servers and getting a reply back. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_upload_send_failure + type: RECORD + - description: | + Time needed for a successful send of a ping to the servers and getting a reply back + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_upload_send_success + type: RECORD + - description: | + Time waited for the uploader at shutdown. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_validation_shutdown_wait + type: RECORD + - description: | + Amount of time it takes to evaluate DNR rules for one network request. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_apis_dnr_evaluate_rules_time + type: RECORD + - description: | + Amount of time it takes to read data into the DNR startup cache file. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_apis_dnr_startup_cache_read_time + type: RECORD + - description: | + Amount of time it takes to write data into the DNR startup cache file. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_apis_dnr_startup_cache_write_time + type: RECORD + - description: | + Amount of time it takes to validate DNR rules of individual ruleset + when dynamic or static rulesets have been loaded from disk. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_apis_dnr_validate_rules_time + type: RECORD + - description: | + Time waited for the dispatcher to unblock during shutdown. + Most samples are expected to be below the 10s timeout used. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_validation_shutdown_dispatcher_wait + type: RECORD + - description: | + The time it takes to categorize elements on a SERP. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: serp_categorization_duration + type: RECORD + - description: | + The time duration it takes for the search service to start up. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: search_service_startup_time + type: RECORD + - description: | + Time for an unsuccessful DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_FAILED_LOOKUP_TIME`. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_dns_failed_lookup_time + type: RECORD + - description: | + Time for a successful DNS resolution (msec) | Migrated from Firefox Telemetry's `DNS_LOOKUP_TIME`. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_dns_lookup_time + type: RECORD + - description: | + Time for a renewed DNS OS resolution (msec) | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME`. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_dns_renewal_time + type: RECORD + - description: | + Time for a DNS OS resolution (msec) used to get TTL | Migrated from Firefox Telemetry's `DNS_RENEWAL_TIME_FOR_TTL`. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_dns_renewal_time_for_ttl + type: RECORD + - description: | + Counts how long to generate canvas random noises. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: fingerprinting_protection_canvas_noise_calculate_time + type: RECORD + - description: | + The time between dispatching OnStartRequest from the socket thread and processing it on the main thread (content process). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_onstart_delay + type: RECORD + - description: | + The time between dispatching OnStopRequest from the socket thread and processing it on the main thread (content process). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_onstop_delay + type: RECORD + - description: | + Glean equivalent to the Geckoview Stream gfx Composite Time metric. Represents The time taken to composite a frame. Differs between non-webrender and webrender, see the non-validation version for more details. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: fog_validation_gvsv_composite_time + type: RECORD + - description: | + The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_html5parser_ondatafinished_to_onstop_delay + type: RECORD + - description: | + The time between processing OnStopRequest and processing OnDataFinished (if OnStopRequest comes first) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_html5parser_ondatafinished_to_onstop_delay_negative + type: RECORD + - description: | + The time between dispatching OnDataFinished from the socket thread and processing it on main/background thread. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_ondatafinished_delay + type: RECORD + - description: | + The time between processing OnDataFinished and processing OnStopRequest (if OnDataFinished comes first) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_ondatafinished_to_onstop_delay + type: RECORD + - description: | + The time between processing OnStopRequest and processing OnDataFinished (if OnStopRequest comes first) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_ondatafinished_to_onstop_delay_negative + type: RECORD + - description: | + Time from navigation start to largest contentful paint. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: perf_largest_contentful_paint + type: RECORD + - description: | + Time from response start to largest contentful paint. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: perf_largest_contentful_paint_from_response_start + type: RECORD + - description: | + Amount of time it takes to load a WebExtensions background page, from when the + build function is called to when the page has finished processing the onload event. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_background_page_load + type: RECORD + - description: | + Amount of time it takes for a BrowserAction popup to open. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_browser_action_popup_open + type: RECORD + - description: | + Amount of time it takes for content scripts from a WebExtension to be injected into a window. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_content_script_injection + type: RECORD + - description: | + Amount of time it takes for a WebExtension to start up, from when the + startup function is called to when the startup promise resolves. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_extension_startup + type: RECORD + - description: | + Amount of time it takes for a PageAction popup to open. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_page_action_popup_open + type: RECORD + - description: | + Amount of time it takes to perform a get via storage.local using the IndexedDB backend. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_storage_local_get_idb + type: RECORD + - description: | + Amount of time it takes to perform a get via storage.local using the JSONFile backend. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_storage_local_get_json + type: RECORD + - description: | + Amount of time it takes to perform a set via storage.local using the Indexed backend. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_storage_local_set_idb + type: RECORD + - description: | + Amount of time it takes to perform a set via storage.local using the JSONFile backend. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_storage_local_set_json + type: RECORD + - description: | + Counts how long it takes to handle cookie banners successfully using CMP rules from DOMContentLoaded until click. This metric is a variant of the cookieBanners.click.handle_duration. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cookie_banners_cmp_handle_duration + type: RECORD + - description: | + Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads without HTTPS RR + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_channel_page_open_to_first_sent + type: RECORD + - description: | + Time in milliseconds from AsyncOpen to first byte of request sent, applicable for page loads with HTTPS RR + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_channel_page_open_to_first_sent_https_rr + type: RECORD + - description: | + Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads without HTTPS RR + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_channel_sub_open_to_first_sent + type: RECORD + - description: | + Time in milliseconds from AsyncOpen to first byte of request sent, applicable for sub-resource loads with HTTPS RR + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_channel_sub_open_to_first_sent_https_rr + type: RECORD + - description: | + Time from submission to dispatch of transaction without HTTPS RR (ms) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_transaction_wait_time + type: RECORD + - description: | + Time from submission to dispatch of transaction when HTTPS RR is used (ms) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_transaction_wait_time_https_rr + type: RECORD + - description: | + How much time was spent to open the dialog, including loading data sizes + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: privacy_sanitize_load_time + type: RECORD + - description: | + The duration of a checkerboard event. Checkerboarding is when painting has not kept up with asynchronous panning and zooming so the compositor has to display a "checkerboard pattern" (or in practice, the background color) rather than the actual page content. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_checkerboard_duration + type: RECORD + - description: | + The total amount of time that we could reasonably be checkerboarding. This is the union of two possibly-intersecting sets of time periods: The first set is that in which checkerboarding was actually happening, since by definition it could potentially be happening. The second set is that in which the APZC is actively transforming content in the compositor, since it could potentially transform it so as to display checkerboarding to the user. Combined with other information, this allows us to meaningfully say how frequently users actually enncounters checkerboarding. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_checkerboard_potential_duration + type: RECORD + - description: | + The time taken to composite a frame. On non-webrender this is the time taken in `CompositorBridgeParent::CompositeToTarget()`. On webrender, this is the time taken from the start of `WebRenderBridgeParent::CompositeToTarget()`, until the render thread has rendered the frame (in `RenderThread::HandleFrameOneDoc()`). (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_composite_time + type: RECORD + - description: | + Time spent in the full paint pipeline for content until it's ready for composition. For non-webrender this includes `paint_time`, plus rasterization if OMTP is enabled. For webrender, this includes `paint_time`, plus scene building time. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_full_paint_time + type: RECORD + - description: | + Time spent in the main-thread paint pipeline for content. For non-webrender, this includes display list building, layer building, and when OMTP is disabled, rasterization. For webrender, this includes display list building, and webrender display list building. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_paint_time + type: RECORD + - description: | + Time between receiving a scroll event on the event loop and compositing its result onto the screen (ms). (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_scroll_present_latency + type: RECORD + - description: | + Time to open existing cache entry file. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_cache_hit_time + type: RECORD + - description: | + In the HTTP page channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_PAGE_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_dns_end + type: RECORD + - description: | + In the HTTP page channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_PAGE_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_dns_start + type: RECORD + - description: | + In the HTTP page channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_first_from_cache + type: RECORD + - description: | + Time after navigationStart that all webfont downloads are completed. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_font_download_end + type: RECORD + - description: | + In the HTTP page channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_tcp_connection + type: RECORD + - description: | + In the HTTP page channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_PAGE_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_tls_handshake + type: RECORD + - description: | + Time spent during page load baseline compiling Javascript in ms. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_baseline_compile_time + type: RECORD + - description: | + Time spent during page load delazifying Javascript in ms. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_delazification_time + type: RECORD + - description: | + Time spent during page load executing Javascript in ms. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_execution_time + type: RECORD + - description: | + Time spent during page load in the GC in ms. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_gc_time + type: RECORD + - description: | + Time spent during page load syntax parsing JS scripts on the main thread in ms. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_parse_time + type: RECORD + - description: | + Time spent during page load protecting JIT executable memory. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_protect_time + type: RECORD + - description: | + Time spent during page load XDR encoding Javascript in ms. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_pageload_xdr_encode_time + type: RECORD + - description: | + Time between receiving a keypress event in the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_interaction_keypress_present_latency + type: RECORD + - description: | + Time between receiving a mouseup which follow by a mouseclick on the event loop and compositing its result onto the screen. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_interaction_mouseup_click_present_latency + type: RECORD + - description: | + Time between tab selection and first composite of the tab content onto the screen. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_interaction_tab_switch_composite + type: RECORD + - description: | + The time between navigationStart and the first non-blank paint of a foreground root content document, in milliseconds. This only records documents that were in an active docshell throughout the whole time between navigation start and non-blank paint. The non-blank paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_page_non_blank_paint + type: RECORD + - description: | + The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_fcp + type: RECORD + - description: | + The time between responseStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_fcp_responsestart + type: RECORD + - description: | + Time in milliseconds from navigationStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_load_time + type: RECORD + - description: | + Time in milliseconds from responseStart to loadEventStart for the foreground http or https root content document. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_load_time_responsestart + type: RECORD + - description: | + Time from navigationStart to domComplete as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_dom_complete + type: RECORD + - description: | + Time from navigationStart to domContentLoadedEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_dom_content_loaded_end + type: RECORD + - description: | + Time from navigationStart to domContentLoadedEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_dom_content_loaded_start + type: RECORD + - description: | + Time from navigationStart to domInteractive as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_dom_interactive + type: RECORD + - description: | + Time from navigationStart to loadEventEnd as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_load_event_end + type: RECORD + - description: | + Time from navigationStart to loadEventStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_load_event_start + type: RECORD + - description: | + The uptime of content processes. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_content_process_lifetime + type: RECORD + - description: | + Time between page load progress starts (0) and completion (100). (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_page_load_progress_time + type: RECORD + - description: | + The time taken to load a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. Back back navigation (sometimes via BFCache) is included which is a source of bimodality due to the <50ms load times. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_page_load_time + type: RECORD + - description: | + Time taken to reload a page. This includes all static contents, no dynamic content. Loading of about: pages is not counted. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_page_reload_time + type: RECORD + - description: | + The time taken to initialize GeckoRuntime. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_startup_runtime + type: RECORD + - description: | + The time spent in the compact phase. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_compact_time + type: RECORD + - description: | + The time spent marking GC roots. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_mark_roots_time + type: RECORD + - description: | + The time spent in the mark phase. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_mark_time + type: RECORD + - description: | + The time taked by a minor (nursery) collection. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_minor_time + type: RECORD + - description: | + The time spent in the preparation phase. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_prepare_time + type: RECORD + - description: | + The time spent running a GC slice. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_slice_time + type: RECORD + - description: | + The time spent in the sweep phase. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_sweep_time + type: RECORD + - description: | + The total time taken by a major collection. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: javascript_gc_total_time + type: RECORD + - description: | + Time spent deserializing structured data + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_clone_deserialize_time + type: RECORD + - description: | + Time to load all of a page's resources and render. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_page_total_content_page_load + type: RECORD + - description: | + Time spent in milliseconds calling all request animation frame callbacks for a document before it has reached readystate complete. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_req_anim_frame_callback + type: RECORD + - description: | + Time spent in milliseconds calling all request animation frame callbacks for a document after it has reached readystate complete. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_responsiveness_req_anim_frame_callback + type: RECORD + - description: | + Time from navigationStart to responseStart as per the W3C Performance Timing API. (Migrated from the geckoview metric of the same name.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_time_response_start + type: RECORD + - description: | + If a HTTPS-First (`dom.security.https_first` enabled) upgrade isn't successful, measures the timespan between the navigation start and the downgrade. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: httpsfirst_downgrade_time + type: RECORD + - description: | + If a schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrade isn't successful, measures the timespan between the navigation start and the downgrade. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: httpsfirst_downgrade_time_schemeless + type: RECORD + - description: | + The time between processing OnDataFinished and processing OnStopRequest for CSSLoader in the content process + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_cssloader_ondatafinished_to_onstop_delay + type: RECORD + - description: | + Measures how long we take to evaluate the trust status of a certificate. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_verifier_cert_trust_evaluation_time + type: RECORD + - description: | + Time spent in the call to the native OS DNS resolution. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_dns_native_https_call_time + type: RECORD + - description: | + Record the duration (in ms) of a successful classification. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: relevancy_classify_duration + type: RECORD + - description: | + For every purge that is scheduled, we call the ClearDataService to purge persistent storage for each detected bounce tracker. This may do some blocking work on main thread and dispatch some cleanups to other threads. Collect telemetry on how long it takes to clear in the wild to determine whether we need to improve performance here. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: bounce_tracking_protection_purge_duration + type: RECORD + - description: | + Time spent in milliseconds since a style sheet started loading async until it finished. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_async_sheet_load + type: RECORD + - description: | + Time in milliseconds that http channel spent suspended between AsyncOpen and OnStartRequest. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_onstart_suspend_total_time + type: RECORD + - description: | + The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses preconnect but did not use Early Hints preload. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_eh_fcp_preconnect + type: RECORD + - description: | + The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected on early page load where the main document uses preconnect and supports Early Hints preload. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_eh_fcp_preconnect_preload_with_eh + type: RECORD + - description: | + The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected on early page load where the preconnected main document uses preconnect and preload without Early Hints. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_eh_fcp_preconnect_preload_without_eh + type: RECORD + - description: | + The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or supports Early Hints preload. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_eh_fcp_preload_with_eh + type: RECORD + - description: | + The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses preload without Early Hints. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_eh_fcp_preload_without_eh + type: RECORD + - description: | + The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A "priority" header has been received. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_h3p_fcp_with_priority + type: RECORD + - description: | + The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses or suppports HTTP3. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_http3_fcp_http3 + type: RECORD + - description: | + The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document supports but is not using HTTP3. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_http3_fcp_supports_http3 + type: RECORD + - description: | + The time between navigationStart and the first contentful paint of a foreground http or https root content document, in milliseconds. The contentful paint timestamp is taken during display list building and does not include rasterization or compositing of that paint. This is collected only on page load where the main document uses HTTP3. A "priority" header has not been received. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_pageload_http3_fcp_without_priority + type: RECORD + - description: | + The time it takes for a write-commit for the Glean database. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: glean_database_write_time + type: RECORD + - description: | + Total time, in milliseconds, required to back up a profile's favicons database. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: browser_backup_favicons_time + type: RECORD + - description: | + Total time, in milliseconds, required to back up a profile's places database. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: browser_backup_places_time + type: RECORD + - description: | + Total time elapsed, in milliseconds, between the start and end of the profile backup creation process + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: browser_backup_total_backup_time + type: RECORD + - description: | + Counts how long each successful ingest takes in the Firefox Suggest Rust component. Ingests that fail for whatever reason are not included. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: urlbar_quick_suggest_ingest_time + type: RECORD + - description: | + Time spent to read the first part of the metadata from the cache entry file. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cache_metadata_first_read_time + type: RECORD + - description: | + Time spent to read the missing part of the metadata from the cache entry file. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cache_metadata_second_read_time + type: RECORD + - description: | + The time it takes to fail to verify a certificate in a TLS handshake. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_verification_time_failure + type: RECORD + - description: | + The time it takes to successfully verify a certificate in a TLS handshake. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_verification_time_success + type: RECORD + - description: | + The time it takes to make an OCSP request that was cancelled. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: ocsp_request_time_cancel + type: RECORD + - description: | + The time it takes to make an OCSP request that failed. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: ocsp_request_time_failure + type: RECORD + - description: | + The time it takes to make an OCSP request that succeeded. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: ocsp_request_time_success + type: RECORD + - description: | + The time between dispatching OnDataFinished from the socket thread and processing it on the background thread. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_content_ondatafinished_delay_2 + type: RECORD + - description: | + Time it took for the parent process to prepare a Datastore. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. When a Datastore is already preloaded, the preparation is usually fast since it doesn't need to do any I/O. If an error occurs, the time is not recorded. In future, we might want to introduce additional separate metrics for different types of datastore preparations (data needs to be loaded from disk, data already available, etc.) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: ls_preparedatastore_processing_time + type: RECORD + - description: | + Time it took for the content process to fully prepare a new LSDatabase, including any time required to prepare a Datastore in the parent. This duration can be significantly affected by Datastore preloading, which is triggered when a page begins to load. If an error occurs, the time is not recorded. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: ls_preparelsdatabase_processing_time + type: RECORD + - description: | + Time spent on blocking main thread by startup cookie database read (in milliseconds), only for blocking case + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_sqlite_cookies_block_main_thread + type: RECORD + - description: | + How long (in milliseconds) after we finished reading the cookie db until the first cookie request came in (0 implies we blocked the main thread) + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_sqlite_cookies_time_to_block_main_thread + type: RECORD + - description: | + In the HTTP page channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_PAGE_CACHE_READ_TIME_V2 in Desktop. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_cache_read_time + type: RECORD + - description: | + In the HTTP page channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_V2 in Desktop. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_complete_load + type: RECORD + - description: | + In the HTTP page channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_CACHED_V2 in Desktop. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_complete_load_cached + type: RECORD + - description: | + In the HTTP page channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_COMPLETE_LOAD_NET_V2 in Desktop. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_complete_load_net + type: RECORD + - description: | + In the HTTP page channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_first_sent_to_last_received + type: RECORD + - description: | + In the HTTP page channel, time for positive cache validation Corresponds to Legacy histogram HTTP_PAGE_REVALIDATION in Desktop. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_http_revalidation + type: RECORD + - description: | + In the HTTP subitem channel,time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_open_to_first_received + type: RECORD + - description: | + In the HTTP page channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_PAGE_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_open_to_first_sent + type: RECORD + - description: | + In the HTTP subitem channel, time from connection cache read start to cache read end. Corresponds to Legacy histogram HTTP_SUB_CACHE_READ_TIME_V2 in Desktop. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_cache_read_time + type: RECORD + - description: | + In the HTTP subitem channel, time from connection open to complete load (cache read end/until the last byte received) Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_V2 in Desktop. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_complete_load + type: RECORD + - description: | + In the HTTP subitem channel, time from connection open to cache read end. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_CACHED_V2 in Desktop. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_complete_load_cached + type: RECORD + - description: | + In the HTTP subitem channel, time from connection open to the last byte received. Corresponds to Legacy histogram HTTP_SUB_COMPLETE_LOAD_NET_V2 in Desktop. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_complete_load_net + type: RECORD + - description: | + In the HTTP subitem channel, time from the DNS request being issued to the response. Corresponds to Legacy histogram HTTP_SUB_DNS_LOOKUP_TIME in Desktop. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_dns_end + type: RECORD + - description: | + In the HTTP subitem channel, time from connection open to the DNS request being issued. Corresponds to Legacy histogram HTTP_SUB_DNS_ISSUE_TIME in Desktop. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_dns_start + type: RECORD + - description: | + In the HTTP subitem channel, time from connection open to cache read start. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2 in Desktop. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_first_from_cache + type: RECORD + - description: | + In the HTTP subitem channel, time from first byte of request sent to the last byte received. Corresponds to Legacy histogram HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_first_sent_to_last_received + type: RECORD + - description: | + In the HTTP subitem channel, time for positive cache validation Corresponds to Legacy histogram HTTP_SUB_REVALIDATION in Desktop. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_http_revalidation + type: RECORD + - description: | + In the HTTP subitem channel, time from connection open to the first byte received. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_RECEIVED in Desktop. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_open_to_first_received + type: RECORD + - description: | + In the HTTP subitem channel, time from connection open to the first byte of requst sent. Corresponds to Legacy histogram HTTP_SUB_OPEN_TO_FIRST_SENT in Desktop. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_open_to_first_sent + type: RECORD + - description: | + In the HTTP subitem channel, time from the TCP SYN packet is received to the connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TCP_CONNECTION_2 in Desktop (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_tcp_connection + type: RECORD + - description: | + In the HTTP subitem channel, time from after the TCP SYN packet is received to the secure connection is established and ready for HTTP. Corresponds to Legacy histogram HTTP_SUB_TLS_HANDSHAKE in Desktop. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_sub_tls_handshake + type: RECORD + - description: | + Time it took between sending PBackgroundLSDatabase::RequestAllowToClose and receiving PBackgroundLSDatabase::AllowToClose message. These messages are issued when QuotaManager is shutting down or is aborting operations for a particular origin or process. + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: localstorage_database_request_allow_to_close_response_time + type: RECORD + - description: | + Time spent to find out a cache entry file is missing. (Migrated from the geckoview metric of the same name). + fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_cache_miss_time + type: RECORD + mode: NULLABLE + name: timing_distribution + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: value + type: RECORD + mode: REPEATED + name: labeled_rate + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: STRING + mode: REPEATED + name: url + type: RECORD + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: STRING + mode: REPEATED + name: text + type: RECORD + - fields: + - description: | + browser.link.open_newwindow.restriction preference value, that is one of 0, 1, or 2, where 2 is desktop default + mode: NULLABLE + name: browser_link_open_newwindow_restriction + type: INTEGER + - description: | + Windows only count of the browser profiles on the current system. This + counts profiles that have been used across all Windows user accounts on + machine since this probe was added. The value persists across installs. + A value of 0 is reported if there is an error determining the correct + count. Unset on other platforms. + mode: NULLABLE + name: browser_engagement_profile_count + type: INTEGER + - description: | + Max amount of DNR rules being evaluated. + mode: NULLABLE + name: extensions_apis_dnr_evaluate_rules_count_max + type: INTEGER + - description: | + Number of domains listed in the quarantined domains list pref for the client during this session. + mode: NULLABLE + name: extensions_quarantined_domains_listsize + type: INTEGER + - description: | + Count at store time how many credit card autofill profiles the user has. + mode: NULLABLE + name: formautofill_creditcards_autofill_profiles_count + type: INTEGER + - description: | + Value of the configurable rate limit, in pings per minute, for Glean pings as set at init. + mode: NULLABLE + name: fog_max_pings_per_minute + type: INTEGER + - description: | + Primary display pixel height, recorded alongside the GeckoView Streaming + API for the purposes of Validation (hence GVSV). + mode: NULLABLE + name: fog_validation_gvsv_primary_height + type: INTEGER + - description: | + Primary display pixel width, recorded alongside the GeckoView Streaming + API for the purposes of Validation (hence GVSV). + mode: NULLABLE + name: fog_validation_gvsv_primary_width + type: INTEGER + - description: | + The amount of bytes written to the extensions StartupCache file. + mode: NULLABLE + name: extensions_startup_cache_write_bytelength + type: INTEGER + - description: | + The number of total GPU process launch attempts. + mode: NULLABLE + name: gpu_process_total_launch_attempts + type: INTEGER + - description: | + The number of consecutive unstable launch attempts. + mode: NULLABLE + name: gpu_process_unstable_launch_attempts + type: INTEGER + - description: The number of entries stored in the AlternateServices nsIDataStorage + mode: NULLABLE + name: data_storage_alternate_services + type: INTEGER + - description: The number of entries stored in the ClientAuthRememberList nsIDataStorage + mode: NULLABLE + name: data_storage_client_auth_remember_list + type: INTEGER + - description: The number of entries stored in the SiteSecurityServiceState nsIDataStorage + mode: NULLABLE + name: data_storage_site_security_service_state + type: INTEGER + - description: | + Graphics adapter dedicated memory (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_adapter_primary_ram + type: INTEGER + - description: | + Amount of displays connected to the device (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_display_count + type: INTEGER + - description: | + Height of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_display_primary_height + type: INTEGER + - description: | + Width of the primary display, takes device rotation into account. (Migrated from the geckoview metric of the same name). + mode: NULLABLE + name: gfx_display_primary_width + type: INTEGER + - description: | + The total disk space available on the storage device that the profile directory is stored on. To reduce fingerprintability, we round to the nearest 10 megabytes and return the result in kilobytes. + mode: NULLABLE + name: browser_backup_prof_d_disk_space + type: INTEGER + - description: | + The total file size of the favicons.sqlite db located in the current profile directory, in kilobytes. + mode: NULLABLE + name: browser_backup_favicons_size + type: INTEGER + - description: | + The total file size of the places.sqlite db located in the current profile directory, in kilobytes. + mode: NULLABLE + name: browser_backup_places_size + type: INTEGER + - description: | + The total size of logins, payment method, and form autofill related files in the current profile directory, in kilobytes. + mode: NULLABLE + name: browser_backup_credentials_data_size + type: INTEGER + - description: | + The total size of files needed for NSS initialization parameters and security certificate settings in the current profile directory, in kilobytes. + mode: NULLABLE + name: browser_backup_security_data_size + type: INTEGER + - description: | + The total file size of the cookies.sqlite db located in the current profile directory, in kilobytes. + mode: NULLABLE + name: browser_backup_cookies_size + type: INTEGER + - description: | + The file size of the formhistory.sqlite db located in the current profile directory, in kilobytes. + mode: NULLABLE + name: browser_backup_form_history_size + type: INTEGER + - description: | + The total size of files for telemetry, site storage, media device origin mapping, chrome privileged IndexedDB databases, and Mozilla Accounts in the current profile directory, rounded to the nearest tenth kilobyte. + mode: NULLABLE + name: browser_backup_misc_data_size + type: INTEGER + - description: | + The total size of files relating to user preferences and permissions in the current profile directory, in kilobytes. + mode: NULLABLE + name: browser_backup_preferences_size + type: INTEGER + - description: | + The total size of the session store backups directory, in kilobytes. + mode: NULLABLE + name: browser_backup_session_store_backups_directory_size + type: INTEGER + - description: | + The size of uncompressed session store json, in kilobytes. + mode: NULLABLE + name: browser_backup_session_store_size + type: INTEGER + - description: | + The total size of the current profiles storage.local legacy JSON backend in the browser-extension-data directory, rounded to the nearest 10 kilobytes. + mode: NULLABLE + name: browser_backup_browser_extension_data_size + type: INTEGER + - description: | + The file size of the current profiles extension-store-permissions/data.safe.bin file, rounded to the nearest 10 kilobytes. + mode: NULLABLE + name: browser_backup_extension_store_permissions_data_size + type: INTEGER + - description: | + The total file size of the current profiles extensions metadata files, rounded to the nearest 10 kilobytes. Files included are: + - extensions.json + - extension-settings.json + - extension-preferences.json + - addonStartup.json.lz4 + mode: NULLABLE + name: browser_backup_extensions_json_size + type: INTEGER + - description: | + The total size of all extensions storage directories, rounded to the nearest 10 kilobytes. + mode: NULLABLE + name: browser_backup_extensions_storage_size + type: INTEGER + - description: | + The total size of the current profiles extensions directory, rounded to the nearest 10 kilobytes. + mode: NULLABLE + name: browser_backup_extensions_xpi_directory_size + type: INTEGER + - description: | + The file size of the current profiles storage-sync-v2.sqlite db, rounded to the nearest 10 kilobytes. + mode: NULLABLE + name: browser_backup_storage_sync_size + type: INTEGER + - description: | + The total number of trust objects in cert9.db + mode: NULLABLE + name: cert_verifier_trust_obj_count + type: INTEGER + - description: The number of third-party PKCS#11 modules loaded. + mode: NULLABLE + name: pkcs11_third_party_modules_loaded + type: INTEGER + - description: | + Width of the sidebar, in pixels. + mode: NULLABLE + name: sidebar_width + type: INTEGER + - description: | + Unsigned int tracking the user's prefered background color \ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_background. + mode: NULLABLE + name: a11y_hcm_background + type: INTEGER + - description: | + Unsigned int tracking the user's prefered foreground color \ (logged when HCM is enabled). This metric was generated to correspond to the Legacy Telemetry scalar a11y.HCM_foreground. + mode: NULLABLE + name: a11y_hcm_foreground + type: INTEGER + - description: | + How the about:home startup cache functioned on startup. + 0: Result value was never set (error case) 1: Cache did not exist 2: Cache page stream was corrupt / inaccessible 3: Cache script stream was corrupt / inaccessible 4: Cache was invalidated by a version bump 5: Cache was valid, but read too late to be useful. 6: Cache was valid and used. 7: Cache is disabled. 8: User did not load about:home on its own by default. 9: Cache is disabled because about:newtab preloading is disabled. + This metric was generated to correspond to the Legacy Telemetry scalar browser.startup.abouthome_cache_result. + mode: NULLABLE + name: browser_startup_abouthome_cache_result + type: INTEGER + - description: | + A count of how many "session" cookie exceptions a user has set. This metric was generated to correspond to the Legacy Telemetry scalar datasanitization.session_permission_exceptions. + mode: NULLABLE + name: datasanitization_session_permission_exceptions + type: INTEGER + - description: | + A bitfield representation of the available DXGI color spaces of the connected displays on Windows. See (https://docs.microsoft.com/en- us/windows/desktop/api/dxgicommon/ne-dxgicommon- dxgi_color_space_type) for definitions of color spaces. Each N'th bit of this scalar indicates whether the DXGI color space with index 'N' is available on at least one connected monitor. This metric was generated to correspond to the Legacy Telemetry scalar gfx.hdr.windows_display_colorspace_bitfield. + mode: NULLABLE + name: gfx_hdr_windows_display_colorspace_bitfield + type: INTEGER + - description: | + The value of this scalar indicates the result of the last heuristic run. 0: "incomplete" 1: "pass" 2: "opt-out" 3: "manually-disabled" 4: "manually-enabled" 5: "enterprise-disabled" 6: "enterprise- present" 7: "enterprise-enabled" 8: "vpn" 9: "proxy" 10: "nrpt" 11: "parental" 12: "modifiedRoots" 13: "thirdPartyRoots" 14: "google" 15: "youtube" 16: "zscaler" 17: "canary" 18: "ignored" This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristics_result. + mode: NULLABLE + name: networking_doh_heuristics_result + type: INTEGER + - description: | + A bitfield representation for the usage of HTTPS RR prefs. bit 0: network.dns.upgrade_with_https_rr is enabled or not. bit 1: network.dns.use_https_rr_as_altsvc is enabled or not. bit 2: network.dns.echconfig.enabled is enabled or not. This metric was generated to correspond to the Legacy Telemetry scalar networking.https_rr_prefs_usage. + mode: NULLABLE + name: networking_https_rr_prefs_usage + type: INTEGER + - description: | + The number of potentially breached passwords, as determined by LoginBreaches.getPotentialBreachesByLoginGUID. This metric was generated to correspond to the Legacy Telemetry scalar pwmgr.potentially_breached_passwords. + mode: NULLABLE + name: pwmgr_potentially_breached_passwords + type: INTEGER + - description: | + The most concurrent Picture-in-Picture players the user had open at any one time. This metric was generated to correspond to the Legacy Telemetry scalar pictureinpicture.most_concurrent_players. + mode: NULLABLE + name: pictureinpicture_most_concurrent_players + type: INTEGER + - description: | + Number of pages that need a frecency recalculation. This metric was generated to correspond to the Legacy Telemetry scalar places.pages_need_frecency_recalculation. + mode: NULLABLE + name: places_pages_need_frecency_recalculation + type: INTEGER + - description: | + Number of history entries for the previous day. This metric was generated to correspond to the Legacy Telemetry scalar places.previousday_visits. + mode: NULLABLE + name: places_previousday_visits + type: INTEGER + - description: | + The time in seconds between the first browser window loading, and the time the OS started. This can give us an indication of whether starting the browser may have been the first thing the user did after starting their computer. This metric was generated to correspond to the Legacy Telemetry scalar startup.seconds_since_last_os_restart. + mode: NULLABLE + name: startup_seconds_since_last_os_restart + type: INTEGER + - description: | + This scalar reports the value of the content blocking category pref (0 = "standard", 1 = "strict", 2 = "custom", 3 = some other value, this is not supported). This metric was generated to correspond to the Legacy Telemetry scalar contentblocking.category. + mode: NULLABLE + name: contentblocking_category + type: INTEGER + - description: | + A uint with the number of active enterprise policies, collected once at startup. This metric was generated to correspond to the Legacy Telemetry scalar policies.count. + mode: NULLABLE + name: policies_count + type: INTEGER + - description: | + This records the number of known profiles after startup completes. This includes any profiles that were created during startup. This metric was generated to correspond to the Legacy Telemetry scalar startup.profile_count. + mode: NULLABLE + name: startup_profile_count + type: INTEGER + - description: | + Measures user retention of the Global Privacy Control. 0 = never enabled, 1 = enabled, 2 = disabled (but was enabled) This metric was generated to correspond to the Legacy Telemetry scalar security.global_privacy_control_enabled. + mode: NULLABLE + name: security_global_privacy_control_enabled + type: INTEGER + - description: | + Measures user retention of the HTTPS-Only Mode. 0 = never enabled, 1 = enabled, 2 = disabled (but was enabled) This metric was generated to correspond to the Legacy Telemetry scalar security.https_only_mode_enabled. + mode: NULLABLE + name: security_https_only_mode_enabled + type: INTEGER + - description: | + Measures user retention of the HTTPS-Only Mode in Private Browsing. 0 = https-only never enabled in PBM, 1 = https-only enabled in PBM, 2 = https-only disabled in PBM (but was enabled) This metric was generated to correspond to the Legacy Telemetry scalar security.https_only_mode_enabled_pbm. + mode: NULLABLE + name: security_https_only_mode_enabled_pbm + type: INTEGER + - description: | + The count of maximum number of tabs open during a subsession, across all windows, including tabs in private windows and restored at startup. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_tab_count. + mode: NULLABLE + name: browser_engagement_max_concurrent_tab_count + type: INTEGER + - description: | + The count of maximum number of pinned tabs open during a subsession. This includes private windows and the ones opened when starting the browser. Starting Firefox 85 this includes number of restored pinned tabs at startup. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_tab_pinned_count. + mode: NULLABLE + name: browser_engagement_max_concurrent_tab_pinned_count + type: INTEGER + - description: | + The count of maximum number of tabs with vertical tabs enabled. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_vertical_tab_count. + mode: NULLABLE + name: browser_engagement_max_concurrent_vertical_tab_count + type: INTEGER + - description: | + The count of maximum number of pinned tabs with vertical tabs enabled. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_vertical_tab_pinned_count. + mode: NULLABLE + name: browser_engagement_max_concurrent_vertical_tab_pinned_count + type: INTEGER + - description: | + The count of maximum number of browser windows open during a subsession. This includes private windows and the ones opened when starting the browser. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.max_concurrent_window_count. + mode: NULLABLE + name: browser_engagement_max_concurrent_window_count + type: INTEGER + - description: | + The time in milliseconds to load any external certificates. This occurs off of the main-thread, but can block main-thread operations. This metric was generated to correspond to the Legacy Telemetry scalar networking.loading_certs_task. + mode: NULLABLE + name: networking_loading_certs_task + type: INTEGER + - description: | + The time in milliseconds to initialize the NSS component in the parent process. This metric was generated to correspond to the Legacy Telemetry scalar networking.nss_initialization. + mode: NULLABLE + name: networking_nss_initialization + type: INTEGER + - description: | + Records the pref value of privacy.bounceTrackingProtection.mode. Values are any of nsIBounceTrackingProtection#Modes. + mode: NULLABLE + name: bounce_tracking_protection_mode + type: INTEGER + - description: | + The duration of the session in milliseconds, excluding the time the device was suspended. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.session_time_excluding_suspend. + mode: NULLABLE + name: browser_engagement_session_time_excluding_suspend + type: INTEGER + - description: | + The duration of the session in milliseconds, including the time the device was suspended. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.session_time_including_suspend. + mode: NULLABLE + name: browser_engagement_session_time_including_suspend + type: INTEGER + - description: | + The count of the unique domains visited in a subsession, after the session has been restored. Subdomains under eTLD are aggregated after the first level (i.e. test.example.com and other.example.com are only counted once). This does not include background page requests and domains from embedded pages or private browsing. The count is limited to 100 unique domains. This metric was generated to correspond to the Legacy Telemetry scalar browser.engagement.unique_domains_count. + mode: NULLABLE + name: browser_engagement_unique_domains_count + type: INTEGER + - description: | + 1 = the default location, 2 = a non-default location + mode: NULLABLE + name: browser_backup_location_on_device + type: INTEGER + mode: NULLABLE + name: quantity + type: RECORD + - fields: + - description: | + The outcome after the app detected that it was running from DMG or an app translocated location and should offer to install and relaunch itself. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: startup_run_from_dmg_install_outcome + type: RECORD + - description: | + The pref value of the cookie banner service mode for normal windows. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: cookie_banners_normal_window_service_mode + type: RECORD + - description: | + The pref value of the cookie banner service mode for private windows. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: cookie_banners_private_window_service_mode + type: RECORD + - description: Indicates whether or not migration was successful for each nsIDataStorage. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: data_storage_migration + type: RECORD + - description: Whether or not each step of the OSKeyStore self test succeeded. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: oskeystore_self_test + type: RECORD + - description: The results of hardware decoder support for different video codecs. True means that codec can be decoded by hardware on user's device. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: media_playback_device_hardware_decoder_support + type: RECORD + - description: | + Which system provider are we using on Linux + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: geolocation_linux_provider + type: RECORD + - description: | + Stores alt text modal settings for the user. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: pdfjs_image_alt_text_edit + type: RECORD + - description: | + OS high contrast or other accessibility theme is enabled. The result is split into keys which represent the values of browser.display.document_color_use: "default", "always", or "never". This metric was generated to correspond to the Legacy Telemetry scalar a11y.theme. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: a11y_theme + type: RECORD + - description: | + Record whether hardware decoding is supported for the specific video codec. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hardware_decoding_support. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: media_video_hardware_decoding_support + type: RECORD + - description: | + Record whether hardware decoding is supported for the specific video codec, this only records video in HD (1280*720) or higher resultion. The key is the type of video codec, eg. video/vp9. This metric was generated to correspond to the Legacy Telemetry scalar media.video_hd_hardware_decoding_support. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: media_video_hd_hardware_decoding_support + type: RECORD + - description: | + True if this heuristic (key) was ever tripped during the session. This metric was generated to correspond to the Legacy Telemetry scalar networking.doh_heuristic_ever_tripped. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: networking_doh_heuristic_ever_tripped + type: RECORD + - description: | + Name of IME which was selected by users on macOS. The value is Input Source ID if non-Japanese IME was open. Otherwise, if Japanese IME was open, the value is Bundle ID. Input Source ID includes input mode, but Bundle ID does not include input mode. This metric was generated to correspond to the Legacy Telemetry scalar widget.ime_name_on_mac. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: widget_ime_name_on_mac + type: RECORD + - description: | + Locale ID and name of IME which was selected by users on Windows. This does NOT collect legacy IMM-IME names since we cannot get readable names and we do not support IMM-IME so aggressively because IME vendors should've already released TIP for TSF for supporting Windows 8 or later completely. This metric was generated to correspond to the Legacy Telemetry scalar widget.ime_name_on_windows. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: widget_ime_name_on_windows + type: RECORD + - description: | + Same data as ime_name_on_windows, but only collecting IME names which inserted CRLF to check whether the feature works. This metric was generated to correspond to the Legacy Telemetry scalar widget.ime_name_on_windows_inserted_crlf. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: widget_ime_name_on_windows_inserted_crlf + type: RECORD + - description: | + Records whether Firefox was the default handler for particular file types or protocols. The result is split into keys which represent the file extension or scheme: currently, a subset of the file types Firefox registers to handle, namely ".pdf" and "mailto" as protocol. In the future, more file types may be recorded. This metric was generated to correspond to the Legacy Telemetry scalar os.environment.is_default_handler. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: os_environment_is_default_handler + type: RECORD + - description: | + Name of active IM (e.g., xim, fcitx, ibus, etc) which was actually set by env on Linux. Different from Windows and macOS, this value includes non-IME users even though this is recoded when first compositionstart event because dead key is also implemented by IME on Linux. This metric was generated to correspond to the Legacy Telemetry scalar widget.ime_name_on_linux. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: widget_ime_name_on_linux + type: RECORD + - description: | + The widgets in the toolbars. See https://firefox-source- docs.mozilla.org/browser/BrowserUsageTelemetry.html This metric was generated to correspond to the Legacy Telemetry scalar browser.ui.toolbar_widgets. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: browser_ui_mirror_for_toolbar_widgets + type: RECORD + - description: | + Whether the system has any matching pointing device for each label. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: widget_pointing_devices + type: RECORD + - description: | + Record the statuses related with the media decryption. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: BOOLEAN + mode: REPEATED + name: mediadrm_decryption + type: RECORD + mode: NULLABLE + name: labeled_boolean + type: RECORD + - fields: + - description: | + The client_id according to Telemetry. + Might not always have a value due to being too early for it to have + loaded. + Value may be the canary client id `c0ffeec0-ffee-c0ff-eec0-ffeec0ffeec0` + in pings near when the data upload pref is disabled (if Telemetry gets + to go first), or between when a client_id has been removed and when it + has been regenerated. + Does not need to be sent in the Glean "deletion-request" ping. + mode: NULLABLE + name: legacy_telemetry_client_id + type: STRING + - description: | + The profile_group_id according to Telemetry. + Might not always have a value due to being too early for it to have + loaded. + Does not need to be sent in the Glean "deletion-request" ping. + mode: NULLABLE + name: legacy_telemetry_profile_group_id + type: STRING + mode: NULLABLE + name: uuid + type: RECORD + - fields: + - description: | + Records how many percent of battery was available for each period of user activity. + fields: + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + mode: NULLABLE + name: power_battery_percentage_when_user_active + type: RECORD + - description: | + Time spent to display first page in PDF Viewer (ms). + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: pdfjs_time_to_view + type: RECORD + - description: | + How many timers were processed in a single wake-up of the Timer Thread. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: timer_thread_timers_fired_per_wakeup + type: RECORD + - description: | + If we fix up a cookie lastAccessed timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_access_fixup_diff + type: RECORD + - description: | + If we fix up a cookie creation timestamp that is in the future this metric records the number of seconds that timestamp was off from NOW. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_creation_fixup_diff + type: RECORD + - description: | + The download throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_1_download_throughput + type: RECORD + - description: | + The download throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_2_download_throughput + type: RECORD + - description: | + The download throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_download_throughput + type: RECORD + - description: | + How often a query selector is run during the lifetime of a sub-frame content window. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cookie_banners_click_query_selector_run_count_per_window_frame + type: RECORD + - description: | + How often a query selector is run during the lifetime of a top-level content window. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cookie_banners_click_query_selector_run_count_per_window_top_level + type: RECORD + - description: | + Total time spent (in microseconds) on running querySelector for the lifetime of a sub-frame content window. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cookie_banners_click_query_selector_run_duration_per_window_frame + type: RECORD + - description: | + Total time spent (in microseconds) on running querySelector for the lifetime of a top-level content window. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cookie_banners_click_query_selector_run_duration_per_window_top_level + type: RECORD + - description: | + The upload throughput for http/1.0, http/1.1 requests larger than 10MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_1_upload_throughput + type: RECORD + - description: | + The upload throughput for http/2 requests larger than 10MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_2_upload_throughput + type: RECORD + - description: | + The upload throughput for http/3 requests larger than 10MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_upload_throughput + type: RECORD + - description: | + Time between tab selection and first composite of the tab content onto the screen. Implemented alongside the Geckoview Streaming version to measure potential differences between the two. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: fog_validation_gvsv_number_of_unique_site_origins_all_tabs + type: RECORD + - description: | + Amount of time (keyed by addon id) that an event page has been running before being suspended, + or the entire addon shutdown. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: extensions_timing_event_page_running_time + type: RECORD + - description: | + A distribution of the partitioned cookies in storage belonging to a particular cookie key (host + origin attributes) + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_count_part_by_key + type: RECORD + - description: | + Reports the number of partitioned cookies in storage + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_count_partitioned + type: RECORD + - description: | + Reports the total number of cookies in storage + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_count_total + type: RECORD + - description: | + A distribution of the unpartitioned cookies in storage belonging to a particular cookie key (host + origin attributes) + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_count_unpart_by_key + type: RECORD + - description: | + Reports the number of unpartitioned cookies in storage + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_count_unpartitioned + type: RECORD + - description: | + A distribution of the number of cookies purged for a single host + OA entry as a result of exceeding the maximum threshold for the given host + OA (single purge) + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_purge_entry_max + type: RECORD + - description: | + A distribution of the number of cookies purged across all host + OAs as a result of exceeding the cookie maximum threshold (single purge) + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_purge_max + type: RECORD + - description: | + The upload throughput for http/1.0, http/1.1 request size larger than 100MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_1_upload_throughput_100 + type: RECORD + - description: | + The upload throughput for http/1.0, http/1.1 request size between 10MB and 50MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_1_upload_throughput_10_50 + type: RECORD + - description: | + The upload throughput for http/1.0, http/1.1 request size between 50MB and 100MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_1_upload_throughput_50_100 + type: RECORD + - description: | + The upload throughput for http/2 request size larger than 100MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_2_upload_throughput_100 + type: RECORD + - description: | + The upload throughput for http/2 request size between 10MB and 50MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_2_upload_throughput_10_50 + type: RECORD + - description: | + The upload throughput for http/2 request size between 50MB and 100MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_2_upload_throughput_50_100 + type: RECORD + - description: | + The upload throughput for http/3 request size larger than 100MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_upload_throughput_100 + type: RECORD + - description: | + The upload throughput for http/3 request size between 10MB and 50MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_upload_throughput_10_50 + type: RECORD + - description: | + The upload throughput for http/3 request size between 50MB and 100MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_upload_throughput_50_100 + type: RECORD + - description: | + The peak number of CSS pixels that checkerboarded during a checkerboard event. The minimum value of the largest histogram bucket is the size of a 4k display with maximum APZ zooming. (Migrated from the geckoview metric of the same name). + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_checkerboard_peak_pixel_count + type: RECORD + - description: | + An opaque measurement of the severity of a checkerboard event. This doesn't have units, it's just useful for comparing two checkerboard events to see which one is worse, for some implementation-specific definition of "worse". The larger the value, the worse the checkerboarding. (Migrated from the geckoview metric of the same name). + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_checkerboard_severity + type: RECORD + - description: | + The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name). + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_frame_time_from_paint + type: RECORD + - description: | + The time, in percentage of a vsync interval, spent from the vsync that started a paint in the content process until that frame is presented in the compositor. (Migrated from the geckoview metric of the same name). + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_frame_time_from_vsync + type: RECORD + - description: | + The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor, for frames that contained an SVG to be drawn by webrender. (Migrated from the geckoview metric of the same name). + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_frame_time_with_svg + type: RECORD + - description: | + The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading resources. (Migrated from the geckoview metric of the same name). + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_frame_time_without_resource_upload + type: RECORD + - description: | + The time, in percentage of a vsync interval, spent from beginning a paint in the content process until that frame is presented in the compositor by webrender, excluding time spent uploading any content. (Migrated from the geckoview metric of the same name). + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: gfx_content_frame_time_without_upload + type: RECORD + - description: | + When a document is loaded, report the number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) of the entire browser if it has been at least 5 minutes since last time we collect this data. (Migrated from the geckoview metric of the same name). + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_document_site_origins + type: RECORD + - description: | + When a document is unloaded, report the highest number of [site origins](https://searchfox.org/ mozilla-central/rev/ 3300072e993ae05d50d5c63d815260367eaf9179/ caps/nsIPrincipal.idl#264) loaded simultaneously in that document. (Migrated from the geckoview metric of the same name). + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geckoview_per_document_site_origins + type: RECORD + - description: | + Size of deserialized data, in items + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: performance_clone_deserialize_items + type: RECORD + - description: | + The thickness used to draw a free highlight. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: pdfjs_editing_highlight_thickness + type: RECORD + - description: | + Amount of bytes sent using TLS early data at the start of a TLS connection for a given channel. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: network_tls_early_data_bytes_written + type: RECORD + - description: The difference between the length of encoded certificate vs the actual certificate. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_compression_brotli_saved_bytes + type: RECORD + - description: The difference between the length of encoded certificate vs the actual certificate. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_compression_zlib_saved_bytes + type: RECORD + - description: | + Number of bounce trackers purged successfully per scheduled purge. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: bounce_tracking_protection_num_hosts_per_purge_run + type: RECORD + - description: The difference between the length of encoded certificate vs the actual certificate. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: cert_compression_zstd_saved_bytes + type: RECORD + - description: | + The number of cookie bytes exceeding chips partition limit capacity for a single partition + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_cookie_chips_partition_limit_overflow + type: RECORD + - description: | + Accuracy returned by the Geolocation API + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: geolocation_accuracy + type: RECORD + - description: | + The download throughput for http/3 requests size larger than 100MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_download_throughput_100 + type: RECORD + - description: | + The download throughput for http/3 requests between 10MB and 50MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_download_throughput_10_50 + type: RECORD + - description: | + The download throughput for http/3 requests between 50MB and 100MB. Measured in megabits per second, Mbps. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_download_throughput_50_100 + type: RECORD + - description: | + HTTP3 UDP number of segments per datagram received. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_udp_datagram_segments_received + type: RECORD + - description: | + HTTP3: packet loss ratio (multiply by 10000). + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_loss_ratio + type: RECORD + - description: | + HTTP3: ECN CE to ECT0 ratio (multiply by 10000) received. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_ecn_ce_ect0_ratio_received + type: RECORD + - description: | + HTTP3: ECN CE to ECT0 ratio (multiply by 10000) sent. + fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: networking_http_3_ecn_ce_ect0_ratio_sent + type: RECORD + mode: NULLABLE + name: custom_distribution + type: RECORD + - fields: + - description: | + The submission URL of the default engine. This is only reported in the + cases where: + The engine is an application provided engine. + The engine has the same name as an application provided engine. + The engine matches one of a specific list of well known search engines. + mode: NULLABLE + name: search_engine_default_submission_url + type: STRING + - description: | + The submission URL of the default engine. This is only reported in the + cases where: + The engine is an application provided engine. + The engine has the same name as an application provided engine. + The engine matches one of a specific list of well known search engines. + If this string is an empty string (`""`), this means that one or both of + the preferences `browser.search.separatePrivateDefault` and + `browser.search.separatePrivateDefault.ui.enabled` are set to false. + It is possible that the user selects the same private engine as for the + default engine, and hence both versions of these fields will be filled in. + mode: NULLABLE + name: search_engine_private_submission_url + type: STRING + mode: NULLABLE + name: url2 + type: RECORD + - fields: + - description: | + The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the number of encodings. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_length_changed + type: RECORD + - description: | + The proportion of RTCRtpSenders configured with the setParameters compat mode that have thrown an error at least once about a setParameters call that had no encodings (we do not measure this against the general population of RTCRtpSenders, since without the compat mode this failure is never observed, because it fails the length change check). + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_no_encodings + type: RECORD + - description: | + The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters) + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_no_getparameters + type: RECORD + - description: | + The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that did not set the transactionId field. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_no_transactionid + type: RECORD + - description: | + The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that had no encodings. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_other + type: RECORD + - description: | + The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see fail_length_changed). + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_rid_changed + type: RECORD + - description: | + The proportion of RTCRtpSenders that have thrown an error at least once about a setParameters call that used a stale transaction id. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_fail_stale_transactionid + type: RECORD + - description: | + The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the number of encodings. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_warn_length_changed + type: RECORD + - description: | + The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call because [[LastReturnedParameters]] was not set. (ie; there was not a recent enough call to getParameters) + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_warn_no_getparameters + type: RECORD + - description: | + The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that did not set the transactionId field. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_warn_no_transactionid + type: RECORD + - description: | + The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that attempted to change the rid on an encoding (note that we only check this if the encoding count did not change, see warn_length_changed). + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_warn_rid_changed + type: RECORD + - description: | + The proportion of RTCRtpSenders configured with the setParameters compat mode that have warned at least once about a setParameters call that used a stale transaction id. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_setparameters_warn_stale_transactionid + type: RECORD + - description: | + The proportion of RTCRtpSenders that were created by an addTransceivers call that was passed a sendEncodings. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: rtcrtpsender_used_sendencodings + type: RECORD + - description: | + The rate of failed translations requests. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: translations_error_rate + type: RECORD + - description: | + The proportion of cookie banners handled by CMP rules within the total number of cases handled, including those handled by site-specific rules. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: cookie_banners_cmp_ratio_handled_by_cmp_rule + type: RECORD + - description: | + This counts the number of times we set a cookie from a foreign (not same-site) context. Introduced as a denomenator for measuring CHIPS adoption. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: networking_set_cookie_foreign + type: RECORD + - description: | + This counts the number of times we set a cookie that has the Partitioned attribute in a foreign (not same-site) context. This tracks the adoption of CHIPS. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: networking_set_cookie_foreign_partitioned + type: RECORD + - description: | + This counts the number of times we set a cookie that has the Partitioned attribute. This tracks the adoption of CHIPS. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: networking_set_cookie_partitioned + type: RECORD + - description: | + How many successfully-built certificate chains used a certificate from the built-in roots module. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: verification_used_cert_from_built_in_roots_module + type: RECORD + - description: | + How many successfully-built certificate chains used a certificate from the NSS cert DB. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: verification_used_cert_from_nss_cert_db + type: RECORD + - description: | + How many successfully-built certificate chains used a certificate from preloaded intermediates. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: verification_used_cert_from_preloaded_intermediates + type: RECORD + - description: | + How many successfully-built certificate chains used a third-party certificate from the OS. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: verification_used_cert_from_third_party_certificates + type: RECORD + - description: | + How many successfully-built certificate chains used a certificate from the TLS handshake. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: verification_used_cert_from_tls_handshake + type: RECORD + - description: | + How many HTTPS-First (`dom.security.https_first` enabled) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: httpsfirst_downgraded_on_timer + type: RECORD + - description: | + How many of schemeless HTTPS-First (`dom.security.https_first` disabled, but load marked as schemeless) upgrades get downgraded again because the HTTP request fired after 3s received a answer faster than the HTTPS request + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: httpsfirst_downgraded_on_timer_schemeless + type: RECORD + - description: | + Numerator: How often a new private browsing window is opened while the old private browsing session is still being shut down. Denominator: How many private browsing sessions (are fully exited). Rate: Of all private browsing sessions, how often do we run into the race condition. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: private_browsing_window_open_during_teardown + type: RECORD + - description: | + How many successfully-built certificate chains used a certificate from the built-in roots module. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: pkcs11_built_in_roots_module + type: RECORD + - description: | + How many successfully-built certificate chains used a certificate from the NSS cert DB. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: pkcs11_nss_cert_db + type: RECORD + - description: | + This counts the number of times a cookie is set already expires but it would not if we considered the server time. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: networking_set_cookie_expired_without_server_time + type: RECORD + - description: | + The rate of svg elements that have child elements during parsing, where their HTML counterpart would not have children. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: parsing_svg_unusual_pcdata + type: RECORD + - description: | + How often a certificate signature to be verified is in the cache already. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: cert_signature_cache_hits + type: RECORD + - description: | + How often an SCT signature to be verified is in the cache already. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: sct_signature_cache_hits + type: RECORD + - description: | + How often a certificate's trust is in the cache already. + fields: + - mode: NULLABLE + name: denominator + type: INTEGER + - mode: NULLABLE + name: numerator + type: INTEGER + mode: NULLABLE + name: cert_trust_cache_hits + type: RECORD + mode: NULLABLE + name: rate + type: RECORD + - fields: + - mode: REPEATED + name: background_update_reasons_to_not_update + type: STRING + - mode: REPEATED + name: browser_migration_matched_extensions + type: STRING + - mode: REPEATED + name: browser_migration_unmatched_extensions + type: STRING + mode: NULLABLE + name: string_list + type: RECORD + - fields: + - description: | + Static data recorded to verify the new object metric type end-to-end. + mode: NULLABLE + name: fog_validation_some_object + type: JSON + - description: | + What widgets are in which toolbars. Not dissimilar from Telemetry's `browser.ui.toolbar_widgets`, but in a friendlier format. See https://firefox-source-docs.mozilla.org/browser/BrowserUsageTelemetry.html for how widget ids and positions are determined. + mode: NULLABLE + name: browser_ui_toolbar_widgets + type: JSON + mode: NULLABLE + name: object + type: RECORD + - fields: + - description: | + Records the GDPR choice on Google Search based on the "SOCS" cookie of the Google Search domains. The value could be "Accept", "Reject" or "Custom". We use the label to record different choices on different Google domains. We only collect this if the default search engine is Google. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: STRING + mode: REPEATED + name: cookie_banners_google_gdpr_choice_cookie + type: RECORD + - description: | + PLACES - stage reached when trying to fix a database corruption, see Places::Database::eCorruptDBReplaceStage. + fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: STRING + mode: REPEATED + name: places_places_database_corruption_handling_stage + type: RECORD + mode: NULLABLE + name: labeled_string + type: RECORD + - fields: + - description: | + In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), overall load time + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_http3_complete_load + type: RECORD + - description: | + In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from first byte of request sent to last byte of response received + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_http3_first_sent_to_last_received + type: RECORD + - description: | + In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of reply received + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_http3_open_to_first_received + type: RECORD + - description: | + In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from open to first byte of request + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_http3_open_to_first_sent + type: RECORD + - description: | + In the HTTP channel (keys: uses_http3_page, uses_http3_sub, supports_http3_page, supports_http3_sub), time from secure connection start (after TCP SYN) to ready for HTTP + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_http3_tls_handshake + type: RECORD + - description: | + In the HTTP channel (keys: supports_http3_page, supports_http3_sub), time from TCP SYN to ready for HTTP + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_sup_http3_tcp_connection + type: RECORD + - description: | + The time a connection was in the 0-RTT state + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: netwerk_http3_0rtt_state_duration + type: RECORD + - description: Download time for ingestion, labelled by record type + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: suggest_ingest_download_time + type: RECORD + - description: Time for ingestion (excluding download time), labelled by record type + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: suggest_ingest_time + type: RECORD + - description: Time executing queries, labelled by provider type + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: suggest_query_time + type: RECORD + - description: | + Time for a successful DoH request, from AsyncOpen to ReturnData + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: networking_trr_fetch_duration + type: RECORD + - description: | + The time to reuse an idle connection in HTTP3 (ms); keyed by the transaction reusing an idle connection has succeeded or failed + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: bucket_count + type: INTEGER + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: histogram_type + type: STRING + - mode: NULLABLE + name: overflow + type: INTEGER + - mode: REPEATED + name: range + type: FLOAT + - mode: NULLABLE + name: sum + type: INTEGER + - mode: NULLABLE + name: time_unit + type: STRING + - mode: NULLABLE + name: underflow + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: netwerk_http3_time_to_reuse_idle_connection + type: RECORD + mode: NULLABLE + name: labeled_timing_distribution + type: RECORD + - fields: + - description: | + HTTP3: ECN CE to ECT0 ratio (multiply by 10000). + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: networking_http_3_ecn_ce_ect0_ratio + type: RECORD + - description: | + This metric logs the count of directory entries iterated within the QuotaManager::InitializeRepository function for each repository type. Each instance of this metric is labeled with one of three repository types: "persistent", "temporary" or "default" (there's also "private" repository but that should never be iterated by the function). The main purpose is to track and analyze iteration counts during the initialization process of each repository type, helping to identify performance trends or potential inefficiencies across these repositories. This can provide insight into the impacts of specific code changes, including potential optimizations or regressions. + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: quotamanager_initialize_repository_number_of_iterations + type: RECORD + - description: | + Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets. The key is the cacheSize (20 buckets) and the value is between 0 and 100. + fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - description: This was accidentally sent in the past and is now deprecated. See https://bugzilla.mozilla.org/show_bug.cgi?id=1799509#c5 + mode: NULLABLE + name: count + type: INTEGER + - mode: NULLABLE + name: sum + type: INTEGER + - fields: + - mode: NULLABLE + name: key + type: STRING + - mode: NULLABLE + name: value + type: INTEGER + mode: REPEATED + name: values + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: network_cache_hit_rate_per_cache_size + type: RECORD + mode: NULLABLE + name: labeled_custom_distribution + type: RECORD + mode: NULLABLE + name: metrics + type: RECORD +- description: Set to "Other" if this message contained an unrecognized app name + mode: NULLABLE + name: normalized_app_name + type: STRING +- description: Set to "Other" if this message contained an unrecognized channel name + mode: NULLABLE + name: normalized_channel + type: STRING +- description: An ISO 3166-1 alpha-2 country code + mode: NULLABLE + name: normalized_country_code + type: STRING +- description: Set to "Other" if this message contained an unrecognized OS name + mode: NULLABLE + name: normalized_os + type: STRING +- mode: NULLABLE + name: normalized_os_version + type: STRING +- fields: + - mode: NULLABLE + name: end_time + type: STRING + - fields: + - mode: NULLABLE + name: key + type: STRING + - fields: + - mode: NULLABLE + name: branch + type: STRING + - fields: + - mode: NULLABLE + name: type + type: STRING + - mode: NULLABLE + name: enrollment_id + type: STRING + mode: NULLABLE + name: extra + type: RECORD + mode: NULLABLE + name: value + type: RECORD + mode: REPEATED + name: experiments + type: RECORD + - mode: NULLABLE + name: ping_type + type: STRING + - mode: NULLABLE + name: reason + type: STRING + - mode: NULLABLE + name: seq + type: INTEGER + - mode: NULLABLE + name: start_time + type: STRING + mode: NULLABLE + name: ping_info + type: RECORD +- description: Hashed version of client_id (if present) useful for partitioning; ranges from 0 to 99 + mode: NULLABLE + name: sample_id + type: INTEGER +- description: Time when the ingestion edge server accepted this message + mode: NULLABLE + name: submission_timestamp + type: TIMESTAMP diff --git a/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/start_dataflow.sh b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/start_dataflow.sh index e6bef37..bfc1686 100644 --- a/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/start_dataflow.sh +++ b/backfill/2024-11-06-metrics-pings-metric-labels-over-max-length/start_dataflow.sh @@ -8,7 +8,7 @@ JOB_NAME="firefox-desktop-metric-labels-backfill-1" # this script assumes it's being run from the ingestion-beam directory # of the gcp-ingestion repo. -mvn compile exec:java -Dexec.mainClass=com.mozilla.telemetry.Decoder -Dmaven.compiler.release=11 -Dexec.args="\ +mvn -X compile exec:java -Dexec.mainClass=com.mozilla.telemetry.Decoder -Dmaven.compiler.release=11 -Dexec.args="\ --runner=Dataflow \ --jobName=$JOB_NAME \ --project=$PROJECT \ @@ -17,14 +17,14 @@ mvn compile exec:java -Dexec.mainClass=com.mozilla.telemetry.Decoder -Dmaven.com --geoIspDatabase=gs://moz-fx-data-prod-geoip/GeoIP2-ISP/20241101/GeoIP2-ISP.mmdb \ --schemasLocation=gs://moz-fx-data-prod-dataflow/schemas/202411060452_e01d1666.tar.gz \ --inputType=bigquery_table \ - --input='$PROJECT:payload_bytes_error_firefox_desktop_metrics.structured_input' \ + --input='$PROJECT:payload_bytes_error.backfill' \ --bqReadMethod=storageapi \ --outputType=bigquery \ --bqWriteMethod=file_loads \ - --bqClusteringFields=normalized_channel,sample_id \ - --output=${PROJECT}:firefox_desktop_metrics_output.\${document_type}_v\${document_version} \ + --bqClusteringFields=submission_timestamp \ + --output=${PROJECT}:firefox_desktop_live.metrics_v1 \ --errorOutputType=bigquery \ - --errorOutput=${PROJECT}:payload_bytes_error_firefox_desktop_metrics.structured \ + --errorOutput=${PROJECT}:payload_bytes_error.structured \ --experiments=shuffle_mode=service \ --region=us-central1 \ --usePublicIps=false \