Bug 1950710 - Migrate histograms to use Glean APIs for FX_TAB_CLOSE_*, r=chutten,tabbrowser-reviewers,nsharpley.

Differential Revision: https://phabricator.services.mozilla.com/D242169
This commit is contained in:
Florian Quèze
2025-03-20 20:14:04 +00:00
parent dbfe74c3b2
commit 4ec5f45bdb
2 changed files with 99 additions and 29 deletions

View File

@@ -4276,7 +4276,7 @@
this._getSwitcher().warmupTab(toBlurTo);
}
} else if (!skipPermitUnload && this._hasBeforeUnload(tab)) {
TelemetryStopwatch.start("FX_TAB_CLOSE_PERMIT_UNLOAD_TIME_MS", tab);
let timerId = Glean.browserTabclose.permitUnloadTime.start();
// We need to block while calling permitUnload() because it
// processes the event queue and may lead to another removeTab()
// call before permitUnload() returns.
@@ -4288,9 +4288,8 @@
tab.linkedBrowser.asyncPermitUnload("dontUnload").then(
({ permitUnload }) => {
tab._pendingPermitUnload = false;
TelemetryStopwatch.finish(
"FX_TAB_CLOSE_PERMIT_UNLOAD_TIME_MS",
tab
Glean.browserTabclose.permitUnloadTime.stopAndAccumulate(
timerId
);
if (tab.closing) {
// The tab was closed by the user while we were in permitUnload, don't
@@ -4313,9 +4312,8 @@
err => {
console.error("error while calling asyncPermitUnload", err);
tab._pendingPermitUnload = false;
TelemetryStopwatch.finish(
"FX_TAB_CLOSE_PERMIT_UNLOAD_TIME_MS",
tab
Glean.browserTabclose.permitUnloadTime.stopAndAccumulate(
timerId
);
}
)
@@ -4571,14 +4569,11 @@
// Telemetry stopwatches may already be running if removeTab gets
// called again for an already closing tab.
if (
!TelemetryStopwatch.running("FX_TAB_CLOSE_TIME_ANIM_MS", aTab) &&
!TelemetryStopwatch.running("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab)
) {
if (!aTab._closeTimeAnimTimerId && !aTab._closeTimeNoAnimTimerId) {
// Speculatevely start both stopwatches now. We'll cancel one of
// the two later depending on whether we're animating.
TelemetryStopwatch.start("FX_TAB_CLOSE_TIME_ANIM_MS", aTab);
TelemetryStopwatch.start("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab);
aTab._closeTimeAnimTimerId = Glean.browserTabclose.timeAnim.start();
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
}
// Handle requests for synchronously removing an already
@@ -4605,8 +4600,10 @@
skipSessionStore,
})
) {
TelemetryStopwatch.cancel("FX_TAB_CLOSE_TIME_ANIM_MS", aTab);
TelemetryStopwatch.cancel("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab);
Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId);
aTab._closeTimeAnimTimerId = null;
Glean.browserTabclose.timeNoAnim.cancel(aTab._closeTimeNoAnimTimerId);
aTab._closeTimeNoAnimTimerId = null;
return;
}
@@ -4638,13 +4635,15 @@
tabWidth == 0 /* fade-in transition hasn't moved yet */
) {
// We're not animating, so we can cancel the animation stopwatch.
TelemetryStopwatch.cancel("FX_TAB_CLOSE_TIME_ANIM_MS", aTab);
Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId);
aTab._closeTimeAnimTimerId = null;
this._endRemoveTab(aTab);
return;
}
// We're animating, so we can cancel the non-animation stopwatch.
TelemetryStopwatch.cancel("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab);
Glean.browserTabclose.timeNoAnim.cancel(aTab._closeTimeNoAnimTimerId);
aTab._closeTimeNoAnimTimerId = null;
aTab.style.maxWidth = ""; // ensure that fade-out transition happens
aTab.removeAttribute("fadein");
@@ -4707,7 +4706,7 @@
}
}
TelemetryStopwatch.start("FX_TAB_CLOSE_PERMIT_UNLOAD_TIME_MS", aTab);
let timerId = Glean.browserTabclose.permitUnloadTime.start();
// We need to block while calling permitUnload() because it
// processes the event queue and may lead to another removeTab()
@@ -4716,7 +4715,7 @@
let { permitUnload } = browser.permitUnload();
aTab._pendingPermitUnload = false;
TelemetryStopwatch.finish("FX_TAB_CLOSE_PERMIT_UNLOAD_TIME_MS", aTab);
Glean.browserTabclose.permitUnloadTime.stopAndAccumulate(timerId);
// If we were closed during onbeforeunload, we return false now
// so we don't (try to) close the same tab again. Of course, we
@@ -4998,16 +4997,18 @@
// closeWindow might wait an arbitrary length of time if we're supposed
// to warn about closing the window, so we'll just stop the tab close
// stopwatches here instead.
TelemetryStopwatch.finish(
"FX_TAB_CLOSE_TIME_ANIM_MS",
aTab,
true /* aCanceledOkay */
);
TelemetryStopwatch.finish(
"FX_TAB_CLOSE_TIME_NO_ANIM_MS",
aTab,
true /* aCanceledOkay */
);
if (aTab._closeTimeAnimTimerId) {
Glean.browserTabclose.timeAnim.stopAndAccumulate(
aTab._closeTimeAnimTimerId
);
aTab._closeTimeAnimTimerId = null;
}
if (aTab._closeTimeNoAnimTimerId) {
Glean.browserTabclose.timeNoAnim.stopAndAccumulate(
aTab._closeTimeNoAnimTimerId
);
aTab._closeTimeNoAnimTimerId = null;
}
if (aCloseWindow) {
this._windowIsClosing = closeWindow(