浏览器使用遥测

BrowserUsageTelemetry.sys.mjs 模块是用于测量浏览器使用情况(例如标签页和窗口数量、搜索次数等)的主要模块。

测量记录从 SessionStore 完成会话恢复(即 Firefox 启动后恢复标签页/窗口)后立即开始。

标签页和窗口交互

使用遥测模块目前测量以下与浏览器标签页和窗口的交互:

  • 标签页和窗口参与度:计算会话恢复后子会话中打开的非隐私标签页和窗口的数量(例如,参见 browser.engagement.max_concurrent_tab_count);

  • URI 加载:计算用户直接触发的页面加载次数(不跟踪和发送地址,只计算次数),参见 browser.engagement.total_uri_count);

  • 导航事件:目前,这仅计算页面加载由特定 UI 交互触发的次数(例如,通过 URL 栏搜索,参见 browser.engagement.navigation.urlbar)。

请参阅 Scalars.yaml 以获取跟踪交互的完整列表。

可自定义 UI

此遥测记录有关工具栏项目位置以及用户何时与之交互的信息。它作为标量值与正常的遥测 ping 一起提交。此遥测包含许多不同的部分。

UI 区域

出于此遥测的目的,定义了一组区域。

  • 在主浏览器 UI 中

    • menu-bar - 主菜单。

    • menu-toolbar - 通常隐藏的工具栏,包含主菜单。

    • titlebar - 可选标题栏。

    • tabs-bar - 显示标签页的区域。

    • vertical-tabs-container - 显示垂直标签页的区域。

    • bookmarks-bar - 书签工具栏。

    • app-menu - 主应用程序(汉堡包)菜单。

    • tabs-context - 从右键单击标签页显示的上下文菜单。

    • content-context - 从右键单击网页显示的上下文菜单。

    • widget-overflow-list - 超出可用空间的项目。

    • pinned-overflow-menu - 用户已固定到工具栏溢出菜单的项目。

    • pageaction-urlbar - 地址栏中的页面操作按钮。

    • pageaction-panel - 页面操作(肉丸)菜单。

    • nav-bar-start - 导航工具栏地址栏之前的区域。

    • nav-bar-end - 导航工具栏地址栏之后的区域。

    • unified-extensions-area - 统一扩展面板。

  • about:preferences 中使用不同的类别

    • preferences-paneGeneral

    • preferences-paneHome

    • preferences-panePrivacy

    • preferences-paneSearch

    • preferences-paneSearchResults

    • preferences-paneSync

    • preferences-paneContainers

部件标识符

为了唯一标识一个视觉元素,使用一组启发式方法。

  1. 如果元素是可自定义工具栏项目之一,则使用该项目的 ID。

  2. 如果 DOM 元素设置了 ID,则使用该 ID。

  3. 如果 DOM 元素的类包含 bookmark-itemtab-icon-soundtab-close-button,则使用该类。

  4. 如果 DOM 元素具有 preference keycommandobservesdata-l10n-id 属性,则使用该属性。

  5. 如果仍然没有标识符,则对 DOM 元素的父元素重复此过程。

部件位置

键控标量 browser.ui.toolbar_widgets 记录 UI 中部件的位置。在启动时,通过将标量键 <widget id>_pinned_<area> 设置为 true 来收集和记录部件的位置。部件 ID 是 DOM 中元素的 ID。区域是上面列出的可以自定义的浏览器 UI 中的区域之一。

对于可以控制的区域,设置标量键 <area>_<off/on/newtab>newtab 对书签工具栏来说是特殊的,当工具栏仅在新标签页中显示时使用。

部件自定义

标量 browser.ui.customized_widgets 记录用户何时在工具栏周围移动部件或显示或隐藏某些区域。发生更改时,键为 <widget id>_<action>_<old area>_<new area>_<reason> 的标量递增。操作可以是 moveaddremove 之一。旧区域和新区域是部件的先前位置和当前位置。在 addremove 操作的情况下,其中一个区域将为 na。对于可以显示或隐藏的区域,区域将为 offon。原因是一个简单的字符串,指示导致移动发生的原因(拖动、上下文菜单等)。

UI 交互

标量 browser.ui.interaction.<area> 记录用户与浏览器交互的频率。区域是上面列出的区域之一,以及 keyboard(用于键盘快捷键)。

发生交互时,使用部件的标识符作为键,并递增标量。如果部件由附加组件提供,则删除附加组件标识符,并使用 addonX 形式的标识符,其中 X 是一个数字。此数字在一个会话中是稳定的。每次用户移动或与附加组件交互时,都会使用相同的数字,但是 Firefox 重新启动后,每个附加组件的数字可能会发生变化。

配置文件数量

标量 browser.engagement.profile_count 记录当前 Firefox 安装使用了多少个配置文件。它报告一个分段结果,如果发生错误,则为 0。对于 1-10,将报告原始值,但高于此值,则对于 10-99 报告 10,对于 100-999 报告 100,对于 1000-9999 报告 1000,对于任何大于此值的值报告 10000。

安装的配置文件数量数据存储在更新目录的根目录中,名为 profile_count_<install hash>.json 的文件中。文件的完整路径通常类似于 C:\ProgramData\Mozilla\profile_count_5A9E6E2F272F7AA0.json

此值旨在对重新安装具有弹性,因此在卸载 Firefox 时不会删除该文件。

上下文菜单入口点

某些上下文菜单在多个位置重复使用。默认情况下,我们仅计算每个项目在上下文菜单中的交互次数,而不记录导致上下文菜单打开的入口点。

可以选择加入记录导致上下文菜单打开的入口点。这是通过向 ENTRYPOINT_TRACKED_CONTEXT_MENU_IDS 添加条目来完成的,将上下文菜单的 ID 映射到 browser.ui.interaction. 下的键控标量。仅当在上下文菜单本身中记录交互时,才会记录此标量。

当记录键控标量时,键将是导致上下文菜单打开的触发节点的唯一 ID。值是从该触发节点打开的次数。