diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs index 2579531f60b7..d64ed45ee26a 100644 --- a/browser/components/urlbar/UrlbarController.sys.mjs +++ b/browser/components/urlbar/UrlbarController.sys.mjs @@ -944,8 +944,10 @@ class TelemetryEvent { startEventInfo.interactionType == "dropped" ? "drop_go" : "paste_go"; } else if (event.type == "blur") { action = "blur"; + } else if (MouseEvent.isInstance(event)) { + action = event.target.id == "urlbar-go-button" ? "go_button" : "click"; } else { - action = MouseEvent.isInstance(event) ? "click" : "enter"; + action = "enter"; } let method = action == "blur" ? "abandonment" : "engagement"; @@ -982,6 +984,11 @@ class TelemetryEvent { return; } + if (action == "go_button") { + // Fall back since the conventional telemetry dones't support "go_button" action. + action = "click"; + } + let endTime = (event && event.timeStamp) || Cu.now(); let startTime = startEventInfo.timeStamp || endTime; // Synthesized events in tests may have a bogus timeStamp, causing a diff --git a/browser/components/urlbar/metrics.yaml b/browser/components/urlbar/metrics.yaml index 0cfc7efa6666..8dc8c2946740 100644 --- a/browser/components/urlbar/metrics.yaml +++ b/browser/components/urlbar/metrics.yaml @@ -198,7 +198,8 @@ urlbar: engagement_type: description: > Records how the user selected the result. The possible values are: - `click`, `enter`, `drop_go`, `paste_go`, `dismiss`, `help`. + `click`, `enter`, `go_button`, `drop_go`, `paste_go`, `dismiss`, + `help`. type: string groups: description: > diff --git a/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_engagement_type.js b/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_engagement_type.js index 47161155ffcb..89fc327c79aa 100644 --- a/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_engagement_type.js +++ b/browser/components/urlbar/tests/engagementTelemetry/browser/browser_glean_telemetry_engagement_type.js @@ -28,6 +28,15 @@ add_task(async function engagement_type_enter() { }); }); +add_task(async function engagement_type_go_button() { + await doTest(async browser => { + await openPopup("x"); + EventUtils.synthesizeMouseAtCenter(gURLBar.goButton, {}); + + assertEngagementTelemetry([{ engagement_type: "go_button" }]); + }); +}); + add_task(async function engagement_type_drop_go() { await doTest(async browser => { await doDropAndGo("example.com");