commit a8adba21706f3cc0c935c3bd18fe5f32e6807176
parent be77b2595a99898b209a1a14eabffe5efe00aae7
Author: Jeremy Swinarton <jswinarton@mozilla.com>
Date: Wed, 7 Jan 2026 13:07:02 +0000
Bug 2003703: Telemetry event when tab note is edited r=sthompson,tabbrowser-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D277931
Diffstat:
3 files changed, 47 insertions(+), 1 deletion(-)
diff --git a/browser/components/tabnotes/TabNotesController.sys.mjs b/browser/components/tabnotes/TabNotesController.sys.mjs
@@ -103,7 +103,7 @@ class TabNotesControllerClass {
}
/**
- * @param {CanonicalURLIdentifiedEvent|TabNoteCreatedEvent|TabNoteRemovedEvent} event
+ * @param {CanonicalURLIdentifiedEvent|TabNoteCreatedEvent|TabNoteEditedEvent|TabNoteRemovedEvent} event
*/
handleEvent(event) {
switch (event.type) {
@@ -146,6 +146,18 @@ class TabNotesControllerClass {
lazy.logConsole.debug("TabNote:Created", canonicalUrl);
}
break;
+ case "TabNote:Edited":
+ {
+ const { canonicalUrl } = event.target;
+ const { telemetrySource } = event.detail;
+ if (telemetrySource) {
+ Glean.tabNotes.edited.record({
+ source: telemetrySource,
+ });
+ }
+ lazy.logConsole.debug("TabNote:Edited", canonicalUrl);
+ }
+ break;
case "TabNote:Removed":
{
const { telemetrySource, note } = event.detail;
diff --git a/browser/components/tabnotes/metrics.yaml b/browser/components/tabnotes/metrics.yaml
@@ -32,6 +32,28 @@ tab_notes:
- `hover_menu` # Tab hover preview panel's "Add Note" button
type: string
expires: never
+ edited:
+ type: event
+ description: >
+ Recorded when a user edits an existing tab note.
+ notification_emails:
+ - sthompson@mozilla.com
+ - jswinarton@mozilla.com
+ bugs:
+ - https://bugzil.la/2003703
+ data_reviews:
+ - https://bugzil.la/2003703
+ data_sensitivity:
+ - interaction
+ extra_keys:
+ source:
+ description: >
+ Identifies the user interface entry point that resulted in this tab
+ note being edited. Expected values:
+ - `context_menu` # Tab context menu's "Update Note" menu item
+ - `hover_menu` # Tab hover preview panel's edit note icon button
+ type: string
+ expires: never
deleted:
type: event
description: >
diff --git a/browser/components/tabnotes/test/browser/browser_tab_notes_menu.js b/browser/components/tabnotes/test/browser/browser_tab_notes_menu.js
@@ -253,6 +253,11 @@ add_task(async function test_editTabNote() {
tabNoteMenu.querySelector("#tab-note-editor-button-save").click();
await Promise.all([menuHidden, tabNoteEdited]);
+ await BrowserTestUtils.waitForCondition(
+ () => Glean.tabNotes.edited.testGetValue()?.length,
+ "wait for event to be recorded"
+ );
+
const tabNote = await TabNotes.get(tab);
Assert.equal(
tabNote.text,
@@ -260,6 +265,13 @@ add_task(async function test_editTabNote() {
"The updated text entered into the textarea was saved as a note"
);
+ const [editedMetric] = Glean.tabNotes.edited.testGetValue();
+ Assert.deepEqual(
+ editedMetric.extra,
+ { source: "context_menu" },
+ "edited event extra data should show that the tab note was edited from the context menu"
+ );
+
await TabNotes.delete(tab);
BrowserTestUtils.removeTab(tab);
await SpecialPowers.popPrefEnv();