UITelemetry 数据格式(已弃用)

注意

UITelemetry 已弃用。从 Firefox 61 开始,UITelemetry 不再报告。

UI 遥测以 JSON Blob 的形式发送其数据。本文档描述了 JSON Blob 的不同部分。

toolbars

这跟踪用户 UI 自定义的状态。它具有以下属性

  • sizemode - 字符串,指示窗口处于最大化、正常(还原)或全屏模式;

  • bookmarksBarEnabled - 布尔值,指示书签栏是否可见;

  • menuBarEnabled - 布尔值,指示菜单栏是否可见(在 OS X 上始终为 false);

  • titleBarEnabled - 布尔值,指示(真正的)标题栏是否可见(而不是在标题栏中显示选项卡);

  • defaultKept - 字符串列表,标识仍然位于其默认位置的工具栏按钮和项目。仅发送内置部件的 ID(即不是附加组件部件);

  • defaultMoved - 字符串列表,标识不再位于其默认位置但尚未移至调色板的工具栏按钮和项目。仅发送内置部件的 ID(即不是附加组件部件);

  • nondefaultAdded - 字符串列表,标识从调色板添加的工具栏按钮和项目。仅发送内置部件的 ID(即不是附加组件部件);

  • defaultRemoved - 字符串列表,标识位于调色板中但默认情况下位于其他位置的工具栏按钮和项目。仅发送内置部件的 ID(即不是附加组件部件);

  • addonToolbars - 可自定义的非默认工具栏的数量。默认为 1,因为它计算附加组件栏垫片;

  • visibleTabs - 每个窗口可见选项卡数量的数组;

  • hiddenTabs - 每个窗口隐藏选项卡数量的数组(即全景组中不是当前组的选项卡);

  • countableEvents - 请参阅下一节。

  • durations - 将描述映射到持续时间记录的对象,该记录记录用户花费在执行某项操作上的时间。目前只有一个属性

    • customization - 用户花费在自定义浏览器上的时间。这是一个对象数组,其中每个对象都具有一个 duration 属性,指示以毫秒为单位的时间,以及一个 bucket 属性,指示持续时间信息所在的存储区。

countableEvents

可计数事件存储在 toolbars 部分下。它们计算某些事件发生的次数。不存储时间或其他相关信息 - 仅存储事件发生的次数。

countableEvents 包含一个以其属性作为存储区的列表。存储区表示这些事件发生时浏览器所处的状态,例如当前正在运行交互式教程。有三种类型的存储区

  • __DEFAULT__ - 无存储区,用于浏览器未处于任何特殊状态时。

  • bucket_<NAME> - 正常存储区,用于浏览器处于特殊状态时。存储区 ID 中的 <NAME> 是与存储区关联的名称,可以通过 | 字符进一步细分。

  • bucket_<NAME>|<INTERVAL> - 过期存储区,类似于倒计时器。存储区 ID 中的 <INTERVAL> 描述了记录的事件发生的时间间隔。间隔为 1m(一分钟)、3m(三分钟)、10m(十分钟)和 1h(一小时)。一小时后,将自动再次使用 __DEFAULT__ 存储区。

每个存储区都是一个具有以下属性的对象

  • click-builtin-item 是一个跟踪内置可自定义工具栏项目上的点击的对象,以项目 ID 为键,每个项目都有一个对象,其键为 leftmiddleright,每个都存储一个数字,指示相应类型的点击发生次数。

  • click-menu-button 与此类似,但项目 ID 始终为“button”。

  • click-bookmarks-bar 与此类似,但项目 ID 替换为 container(用于书签或活动标记文件夹上的点击)或 item(用于单个书签)。

  • click-menubar 类似,但项目 ID 替换为 menumenuitemother 之一,具体取决于所点击的项目类型。请注意,这不会在 OS X 上跟踪,因为由于全局菜单栏,我们无法侦听这些事件。

  • click-bookmarks-menu-button 也类似,但项目 ID 替换为

    • menu 用于点击项目的“菜单”部分;

    • add 用于添加书签的点击;

    • edit 用于打开面板以编辑现有书签的点击;

    • in-panel 用于按钮位于菜单面板中且点击它不执行以下操作时的点击

      上述操作;

  • customize 跟踪不同类型的自定义事件,没有 leftmiddleright 的区别。不同的事件如下所示,每个事件都存储其发生的次数

    • start 计算用户开始自定义的次数;

    • add 计算从调色板中某个位置添加项目的次数;

    • move 计算将项目移至其他位置(但不是移至调色板)的次数;

    • remove 计算将项目移至调色板的次数;

    • reset 计算使用“恢复默认值”按钮的次数;

  • search 是一个跟踪各种类型搜索的对象,以搜索

    位置为键,存储一个数字,指示相应类型的搜索发生次数。

    • 还有两个特殊键,它们的含义略有不同。

      • urlbar-keyword 记录原本会是无效协议错误但现在是关键字搜索的搜索。它们也会计入 urlbar 关键字(以及所有其他 urlbar 搜索)。

      • selection 搜索记录搜索建议的选择。它们包括来源、选择的索引以及选择的类型(鼠标或回车键)。选择搜索也会计入其来源。

UITour

UITour API 提供了一种方法,使受信任域上的页面能够安全地与浏览器 UI 交互,并请求其执行某些操作,例如打开菜单并在浏览器 chrome 上显示突出显示 - 用于交互式教程。我们通过 UI 遥测输出中的 UITour 对象跟踪此 API 的一些用法。

每个页面都能够使用标识符(Page ID)进行注册。过去 8 周内看到的页面 ID 列表可通过 seenPageIDs 获得。

页面 ID 也用于标识 countableEvents 的存储区,在以下情况下

  • 当前选项卡是教程页面。这将是一个名称为 UITour|<PAGEID> 的普通存储区,其中 <PAGEID> 是页面的注册 ID。这将导致存储区 ID 类似于 bucket_UITour|australis-tour

  • 教程选项卡已打开,但另一个选项卡处于活动状态。这将是一个名称为 UITour|<PAGEID>|inactive 的过期存储区。这将导致存储区 ID 类似于 bucket_UITour|australis-tour|inactive|1m

  • 教程选项卡最近已打开但已关闭。这将是一个名称为 UITour|<PAGEID>|closed 的过期存储区。这将导致存储区 ID 类似于 bucket_UITour|australis-tour|closed|10m

contextmenu

我们跟踪上下文菜单交互以了解哪些交互最常使用和/或其有效性如何。在 contextmenu 对象中,我们首先按存储区存储内容。接下来,我们将以下不同的上下文菜单情况进行划分

  • selection 如果页面上有用户点击的内容被选中;

  • link 如果用户为链接打开了上下文菜单

  • image-link 如果用户在作为链接的图像或画布上打开了上下文菜单;

  • image 如果用户在图像(不是链接)上打开了上下文菜单;

  • 如果用户在画布(不是链接)上打开了上下文菜单,则为canvas

  • 如果用户在 HTML 视频或音频元素上打开了上下文菜单,则为media

  • 如果用户在文本输入元素上打开了上下文菜单,则为input

  • 对于所有其他打开的上下文菜单,则为other

如果存在,这些对象中的每一个都会获得一个“withcustom”和/或“withoutcustom”属性,分别用于使用自定义页面创建的项目和未使用自定义页面创建的项目的上下文菜单,并且每个属性都包含一个对象,其中 ID 对应于上下文菜单中激活具有该 ID 的项目的次数。仅跟踪内置上下文菜单项,除了这些项目外,还有四个特殊项目会获得计数

  • close-without-interaction 在用户关闭上下文菜单而无需与其交互时递增;

  • custom-page-item 在用户点击页面创建的项目时递增;

  • unknown 在点击没有 ID 的项目时递增;

  • other-item 在点击附加组件提供的菜单项时递增。