# 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/.

# Adding a new metric? We have docs for that!
# https://firefox-source-docs.mozilla.org/toolkit/components/glean/user/new_definitions_file.html

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

browser.engagement:
  tab_unload_count:
    type: counter
    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.
    bugs:
      - https://bugzil.la/1715858
    data_reviews:
      - https://bugzil.la/1715858
    notification_emails:
      - dao@mozilla.com
      - rtestard@mozilla.com
    expires: never
    telemetry_mirror: BROWSER_ENGAGEMENT_TAB_UNLOAD_COUNT

  tab_reload_count:
    type: counter
    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.
    bugs:
      - https://bugzil.la/1715858
    data_reviews:
      - https://bugzil.la/1715858
    notification_emails:
      - dao@mozilla.com
      - rtestard@mozilla.com
    expires: never
    telemetry_mirror: BROWSER_ENGAGEMENT_TAB_RELOAD_COUNT

  tab_explicit_unload:
    type: event
    description: >
      Recorded when the user explicitly unloads tab(s) from memory via
      the tab context menu.
    notification_emails:
      - gstoll@mozilla.com
      - haftandilian@mozilla.com
    bugs:
      - https://bugzil.la/1926390
    data_reviews:
      - https://bugzil.la/1926390
    data_sensitivity:
      - interaction
    extra_keys:
      unload_selected_tab:
        description: whether the currently-selected tab is unloaded
        type: boolean
      all_tabs_unloaded:
        description: whether all tabs in the window were unloaded
        type: boolean
      tabs_unloaded:
        description: The number of tabs unloaded in this operation
        type: quantity
      memory_before:
        description: Memory usage before unloading tabs (in bytes)
        type: quantity
      memory_after:
        description: Memory usage after unloading tabs (in bytes)
        type: quantity
      time_to_unload_in_ms:
        description: Time to unload tabs (in ms)
        type: quantity
    expires: never

  tab_group_create:
    type: event
    description: >
      Recorded when the user creates a new tab group via
      the tab context menu or through drag and drop.
    notification_emails:
      - dao@mozilla.com
      - jswinarton@mozilla.com
    bugs:
      - https://bugzil.la/1938423
    data_reviews:
      - https://bugzil.la/1938423
    data_sensitivity:
      - interaction
    extra_keys:
      source:
        description: The means by which the tab group was created
        type: string
      tabs:
        description: The number of tabs in the group when it was created
        type: quantity
      layout:
        description: The layout of the tab strip when the group was created (either "horizontal" or "vertical")
        type: string
      id:
        description: The ID of the created tab group
        type: string
    expires: never

  tab_group_expand_or_collapse:
    type: event
    description: >
      Recorded when a tab group is expanded or collapsed.
    notification_emails:
      - dao@mozilla.com
      - jswinarton@mozilla.com
    bugs:
      - https://bugzil.la/1938397
    data_reviews:
      - https://bugzil.la/1938397
    data_sensitivity:
      - interaction
    extra_keys:
      total_collapsed:
        description: The total number of active groups in all windows that are collapsed
        type: quantity
      total_expanded:
        description: The total number of active groups in all windows that are expanded
        type: quantity
    expires: never

  tab_group_modify:
    type: event
    description: >
      Recorded when the number of tabs in a tab group are modified.
    notification_emails:
      - dao@mozilla.com
      - jswinarton@mozilla.com
    bugs:
      - https://bugzil.la/1938397
    data_reviews:
      - https://bugzil.la/1938397
    data_sensitivity:
      - interaction
    extra_keys:
      tabs_per_active_group_max:
        description: The number of open tabs in the largest tab group in any window
        type: quantity
      tabs_per_active_group_min:
        description: The number of open tabs in the smallest tab group in any window
        type: quantity
      tabs_per_active_group_median:
        description: The median number of open tabs in tab groups in all windows
        type: quantity
      tabs_per_active_group_average:
        description: The average number of open tabs in tab groups in all windows
        type: quantity
      tabs_inside_groups:
        description: The total number of tabs within tab groups in all windows
        type: quantity
      tabs_outside_groups:
        description: The total number of tabs not in groups in all windows
        type: quantity
    expires: never

browser.ui.interaction:
  all_tabs_panel_dragstart_tab_event_count:
    type: counter
    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.
    bugs:
      - https://bugzil.la/1804722
    data_reviews:
      - https://bugzil.la/1804722
    notification_emails:
      - shong@mozilla.com
      - mconley@mozilla.com
    expires: never
    telemetry_mirror: BROWSER_UI_INTERACTION_ALL_TABS_PANEL_DRAGSTART_TAB_EVENT_COUNT
    no_lint:
      - COMMON_PREFIX

  all_tabs_panel_entrypoint:
    type: labeled_counter
    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.
    bugs:
      - https://bugzil.la/1804722
    data_reviews:
      - https://bugzil.la/1804722
    notification_emails:
      - shong@mozilla.com
      - mconley@mozilla.com
    expires: never
    telemetry_mirror: BROWSER_UI_INTERACTION_ALL_TABS_PANEL_ENTRYPOINT
    no_lint:
      - COMMON_PREFIX

browser.ml.interaction:
  smart_tab_topic:
    type: event
    description: >
      Recorded when the user saves a tab group label with the ml topic
      model
    notification_emails:
      - rrando@mozilla.com
      - vbaungally@mozilla.com
    bugs:
      - https://bugzil.la/1949010
    data_reviews:
      - https://bugzil.la/1949010
    data_sensitivity:
      - interaction
    extra_keys:
      action:
        description: >
          whether the user saved or canceled generating a label
        type: string
      num_tabs_in_group:
        description: >
          number of tabs in the group for which model is generating a
          label
        type: quantity
      ml_label_length:
        description: length of label suggested by model
        type: quantity
      user_label_length:
        description: length of label saved by the user
        type: quantity
      levenshtein_distance:
        description: >
          Levenshtein distance between label suggested by model
          and saved by user
        type: quantity
      model_revision:
        description: topic model version currently running
        type: string
    expires: never
    no_lint:
      - COMMON_PREFIX

  smart_tab_suggest:
    type: event
    description: >
      Recorded when the user saves suggested tabs using the ml
      embedding model
    notification_emails:
      - rrando@mozilla.com
      - vbaungally@mozilla.com
    bugs:
      - https://bugzil.la/1949010
    data_reviews:
      - https://bugzil.la/1949010
    data_sensitivity:
      - interaction
    extra_keys:
      action:
        description: whether the user saved or canceled
        type: string
      num_tabs_in_window:
        description: number of tabs in current window
        type: quantity
      num_tabs_in_group:
        description: number of tabs in the current group
        type: quantity
      num_tabs_suggested:
        description: number of tabs suggested by the ml model
        type: quantity
      num_tabs_approved:
        description: number of tabs the user saved from the suggestions
        type: quantity
      num_tabs_removed:
        description: >
          number of tabs the user removed from the
          suggestions
        type: quantity
      model_revision:
        description: embedding model version currently running
        type: string
    expires: never
    no_lint:
      - COMMON_PREFIX
