# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

---
$schema: moz://mozilla.org/schemas/glean/metrics/2-0-0
$tags:
  - 'Firefox :: Search'

search.engine.default:
  engine_id:
    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-<extensionName>`.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1089670
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1138503
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1755549
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_sensitivity:
      - interaction
    notification_emails:
      - fx-search-telemetry@mozilla.com
      - rev-data@mozilla.com
    expires: never
    lifetime: application
    send_in_pings:
      - 'metrics'
      - 'newtab'

  display_name:
    type: string
    description: |
      The display name of the user's default engine.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1164159
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1164159#c60
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_sensitivity:
      - interaction
    notification_emails:
      - fx-search-telemetry@mozilla.com
      - rev-data@mozilla.com
    expires: never
    lifetime: application
    send_in_pings:
      - 'metrics'

  load_path:
    type: string
    description: |
      A path relating to where the search engine was installed/loaded from.
      For example:
        `[addon]<extension id>` 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.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1164159
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1164159#c60
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_sensitivity:
      - web_activity
    notification_emails:
      - fx-search-telemetry@mozilla.com
      - rev-data@mozilla.com
    expires: never
    lifetime: application
    send_in_pings:
      - 'metrics'

  submission_url:
    type: url
    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.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1164159
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1164159#c60
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_sensitivity:
      - web_activity
    notification_emails:
      - fx-search-telemetry@mozilla.com
      - rev-data@mozilla.com
    expires: never
    lifetime: application
    send_in_pings:
      - 'metrics'

  changed:
    type: event
    description: |
      Recorded when the default search engine is changed.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1634555
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1634555
    data_sensitivity:
      - web_activity
    notification_emails:
      - fx-search-telemetry@mozilla.com
      - rev-data@mozilla.com
    expires: never
    extra_keys:
      previous_engine_id:
        type: string
        description: The id of the previous default engine.
      new_engine_id:
        type: string
        description: The id of the new default engine.
      new_display_name:
        type: string
        description: The display name of the new default engine.
      new_load_path:
        type: string
        description: |
          The path relating to where the new default engine was installed/loaded
          from.
      new_submission_url:
        type: string
        description: |
          The new submission URL of the new default engine. This is
          limited to 100 characters.
      change_source:
        type: string
        description: |
          The source of the change of engine. For possible values,
          see `REASON_CHANGE_MAP` in
          https://searchfox.org/mozilla-central/source/toolkit/components/search/SearchService.sys.mjs

search.engine.private:
  engine_id:
    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-<extensionName>`.
      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.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1563016
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1563016#c8
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_sensitivity:
      - interaction
    notification_emails:
      - fx-search-telemetry@mozilla.com
      - rev-data@mozilla.com
    expires: never
    lifetime: application
    send_in_pings:
      - 'metrics'
      - 'newtab'

  display_name:
    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.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1563016
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1563016#c8
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_sensitivity:
      - interaction
    notification_emails:
      - fx-search-telemetry@mozilla.com
      - rev-data@mozilla.com
    expires: never
    lifetime: application
    send_in_pings:
      - 'metrics'

  load_path:
    type: string
    description: |
      A path relating to where the search engine was installed/loaded from.
      For example:
        `[addon]<extension id>` 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.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1563016
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1563016#c8
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_sensitivity:
      - web_activity
    notification_emails:
      - fx-search-telemetry@mozilla.com
      - rev-data@mozilla.com
    expires: never
    lifetime: application
    send_in_pings:
      - 'metrics'

  submission_url:
    type: url
    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.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1563016
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1563016#c8
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1766999
    data_sensitivity:
      - web_activity
    notification_emails:
      - fx-search-telemetry@mozilla.com
      - rev-data@mozilla.com
    expires: never
    lifetime: application
    send_in_pings:
      - 'metrics'

  changed:
    type: event
    description: |
      Recorded when the default search engine is changed
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1634555
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1634555
    data_sensitivity:
      - web_activity
    notification_emails:
      - fx-search-telemetry@mozilla.com
      - rev-data@mozilla.com
    expires: never
    extra_keys:
      previous_engine_id:
        type: string
        description: The id of the previous default engine.
      new_engine_id:
        type: string
        description: The id of the new default engine.
      new_display_name:
        type: string
        description: The display name of the new default engine.
      new_load_path:
        type: string
        description: |
          The path relating to where the new default engine was installed/loaded
          from.
      new_submission_url:
        type: string
        description: |
          The new submission URL of the new default engine. This is
          limited to 100 characters.
      change_source:
        type: string
        description: |
          The source of the change of engine. For possible values,
          see `REASON_CHANGE_MAP` in
          https://searchfox.org/mozilla-central/source/toolkit/components/search/SearchService.sys.mjs

search.service:
  startup_time:
    type: timing_distribution
    time_unit: nanosecond
    description: |
      The time duration it takes for the search service to start up.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1832509
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1832509#c3
    notification_emails:
      - fx-search-telemetry@mozilla.com
    data_sensitivity:
      - technical
    expires: never

  initialization_status:
    type: labeled_counter
    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.
      failedLoadSettingsAddonManager - the addon manager ready promise was rejected. (from FF135)
      success - search service successfully initialized.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1849013
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1849013
    notification_emails:
      - fx-search-telemetry@mozilla.com
    data_sensitivity:
      - technical
    expires: never
    labels:
      - failedSettings
      - failedFetchEngines
      - failedLoadEngines
      - failedLoadSettingsAddonManager
      - success

browser.searchinit:
  engine_invalid_webextension:
    type: labeled_quantity
    description: >
      Records the WebExtension ID of a search engine where the
      WebExtension is not installed (= 1), disabled (= 2), search engine
      no longer specified (= 4), a different name (= 5), where the
      submission URL is different between the search engine and the
      WebExtension (= 6). The value '3' has been replaced by '6' to
      distinguish newer entries.
      This metric was generated to correspond to the Legacy Telemetry
      scalar browser.searchinit.engine_invalid_webextension.
    bugs:
      - https://bugzil.la/1665938
      - https://bugzil.la/1691050
      - https://bugzil.la/1725501
      - https://bugzil.la/1763528
      - https://bugzil.la/1801017
      - https://bugzil.la/1832463
      - https://bugzil.la/1871199
      - https://bugzil.la/1897049
      - https://bugzil.la/1933859
    data_reviews:
      - https://bugzil.la/1665938
      - https://bugzil.la/1691050
      - https://bugzil.la/1725501
      - https://bugzil.la/1763528
      - https://bugzil.la/1801017
      - https://bugzil.la/1832463
      - https://bugzil.la/1871199
      - https://bugzil.la/1897049
      - https://bugzil.la/1933859
    notification_emails:
      - fx-search-telemetry@mozilla.com
      - mbanner@mozilla.com
    expires: 143
    unit: custom enum value
    telemetry_mirror: BROWSER_SEARCHINIT_ENGINE_INVALID_WEBEXTENSION

  secure_opensearch_engine_count:
    type: quantity
    description: >
      Records the number of secure (i.e., using https) OpenSearch search
      engines a given user has installed.
      This metric was generated to correspond to the Legacy Telemetry
      scalar browser.searchinit.secure_opensearch_engine_count.
    bugs:
      - https://bugzil.la/1789438
      - https://bugzil.la/1811158
      - https://bugzil.la/1846899
      - https://bugzil.la/1881408
      - https://bugzil.la/1916866
    data_reviews:
      - https://bugzil.la/1789438
      - https://bugzil.la/1811158
      - https://bugzil.la/1846899
      - https://bugzil.la/1881408
      - https://bugzil.la/1916866
    notification_emails:
      - fx-search-telemetry@mozilla.com
    expires: 145
    unit: engines
    telemetry_mirror: BROWSER_SEARCHINIT_SECURE_OPENSEARCH_ENGINE_COUNT

  insecure_opensearch_engine_count:
    type: quantity
    description: >
      Records the number of insecure (i.e., using http) OpenSearch search
      engines a given user has installed.
      This metric was generated to correspond to the Legacy Telemetry
      scalar browser.searchinit.insecure_opensearch_engine_count.
    bugs:
      - https://bugzil.la/1789438
      - https://bugzil.la/1811158
      - https://bugzil.la/1846899
      - https://bugzil.la/1881408
      - https://bugzil.la/1916866
    data_reviews:
      - https://bugzil.la/1789438
      - https://bugzil.la/1811158
      - https://bugzil.la/1846899
      - https://bugzil.la/1881408
      - https://bugzil.la/1916866
    notification_emails:
      - fx-search-telemetry@mozilla.com
    expires: 145
    unit: engines
    telemetry_mirror: BROWSER_SEARCHINIT_INSECURE_OPENSEARCH_ENGINE_COUNT

  secure_opensearch_update_count:
    type: quantity
    description: >
      Records the number of OpenSearch search engines with secure updates
      enabled (i.e., using https) a given user has installed.
      This metric was generated to correspond to the Legacy Telemetry
      scalar browser.searchinit.secure_opensearch_update_count.
    bugs:
      - https://bugzil.la/1789438
      - https://bugzil.la/1811158
      - https://bugzil.la/1846899
      - https://bugzil.la/1881408
      - https://bugzil.la/1916866
    data_reviews:
      - https://bugzil.la/1789438
      - https://bugzil.la/1811158
      - https://bugzil.la/1846899
      - https://bugzil.la/1881408
      - https://bugzil.la/1916866
    notification_emails:
      - fx-search-telemetry@mozilla.com
    expires: 145
    unit: updates
    telemetry_mirror: BROWSER_SEARCHINIT_SECURE_OPENSEARCH_UPDATE_COUNT

  insecure_opensearch_update_count:
    type: quantity
    description: >
      Records the number of OpenSearch search engines with insecure
      updates enabled (i.e., using http) a given user has installed.
      This metric was generated to correspond to the Legacy Telemetry
      scalar browser.searchinit.insecure_opensearch_update_count.
    bugs:
      - https://bugzil.la/1789438
      - https://bugzil.la/1811158
      - https://bugzil.la/1846899
      - https://bugzil.la/1881408
      - https://bugzil.la/1916866
    data_reviews:
      - https://bugzil.la/1789438
      - https://bugzil.la/1811158
      - https://bugzil.la/1846899
      - https://bugzil.la/1881408
      - https://bugzil.la/1916866
    notification_emails:
      - fx-search-telemetry@mozilla.com
    expires: 145
    unit: updates
    telemetry_mirror: BROWSER_SEARCHINIT_INSECURE_OPENSEARCH_UPDATE_COUNT

search:
  suggestions_latency:
    type: labeled_timing_distribution
    description: >
      Records the latencies (ms) of search suggestions fetches per search
      engine. Keys in this histogram are search engine IDs for built-in search
      engines and 'other' for non-built-in search engines.

      This metric was generated to correspond to the Legacy Telemetry
      exponential histogram SEARCH_SUGGESTIONS_LATENCY_MS.
    time_unit: millisecond
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1743885
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1743885
    notification_emails:
      - fx-search-telemetry@mozilla.com
      - adw@mozilla.com
    expires: never
    telemetry_mirror: SEARCH_SUGGESTIONS_LATENCY_MS
