summaryrefslogtreecommitdiffstats
path: root/toolkit/components/passwordmgr/LoginManagerTelemetry.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/passwordmgr/LoginManagerTelemetry.sys.mjs')
-rw-r--r--toolkit/components/passwordmgr/LoginManagerTelemetry.sys.mjs54
1 files changed, 54 insertions, 0 deletions
diff --git a/toolkit/components/passwordmgr/LoginManagerTelemetry.sys.mjs b/toolkit/components/passwordmgr/LoginManagerTelemetry.sys.mjs
new file mode 100644
index 0000000000..ad2e7d80d3
--- /dev/null
+++ b/toolkit/components/passwordmgr/LoginManagerTelemetry.sys.mjs
@@ -0,0 +1,54 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/**
+ * Provides the logic for recording all password manager related telemetry data.
+ */
+export class LoginManagerTelemetry {
+ static recordAutofillResult(result) {
+ Glean.pwmgr.formAutofillResult[result].add(1);
+ LoginManagerLegacyTelemetry.recordAutofillResult(result);
+ }
+}
+
+/**
+ * Until the password manager related measurements are fully migrated to Glean,
+ * we need to collect the data in both systems (Legacy Telemetry and Glean) for now.
+ * Not all new Glean metric can be mirrored automatically (using the property telemetry_mirror in metrics.yaml).
+ * Therefore, we need to manually call the Legacy Telemetry API calls in this class.
+ * Once we have collected enough data for all probes in the Glean system, we can remove this class and its references.
+ */
+class LoginManagerLegacyTelemetry {
+ static HISTOGRAM_AUTOFILL_RESULT = "PWMGR_FORM_AUTOFILL_RESULT";
+ static AUTOFILL_RESULT = {
+ filled: 0,
+ no_password_field: 1,
+ password_disabled_readonly: 2,
+ no_logins_fit: 3,
+ no_saved_logins: 4,
+ existing_password: 5,
+ existing_username: 6,
+ multiple_logins: 7,
+ no_autofill_forms: 8,
+ autocomplete_off: 9,
+ insecure: 10,
+ password_autocomplete_new_password: 11,
+ type_no_longer_password: 12,
+ form_in_crossorigin_subframe: 13,
+ filled_username_only_form: 14,
+ };
+
+ static convertToAutofillResultNumber(result) {
+ return LoginManagerLegacyTelemetry.AUTOFILL_RESULT[result];
+ }
+
+ static recordAutofillResult(result) {
+ const autofillResultNumber =
+ LoginManagerLegacyTelemetry.convertToAutofillResultNumber(result);
+ Services.telemetry
+ .getHistogramById(LoginManagerLegacyTelemetry.HISTOGRAM_AUTOFILL_RESULT)
+ .add(autofillResultNumber);
+ }
+}
+export default LoginManagerTelemetry;