summaryrefslogtreecommitdiffstats
path: root/toolkit/components/telemetry/pings/UninstallPing.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/telemetry/pings/UninstallPing.sys.mjs')
-rw-r--r--toolkit/components/telemetry/pings/UninstallPing.sys.mjs34
1 files changed, 34 insertions, 0 deletions
diff --git a/toolkit/components/telemetry/pings/UninstallPing.sys.mjs b/toolkit/components/telemetry/pings/UninstallPing.sys.mjs
new file mode 100644
index 0000000000..00c1e80a40
--- /dev/null
+++ b/toolkit/components/telemetry/pings/UninstallPing.sys.mjs
@@ -0,0 +1,34 @@
+/* -*- js-indent-level: 2; indent-tabs-mode: nil -*- */
+/* 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/. */
+
+const lazy = {};
+
+ChromeUtils.defineESModuleGetters(lazy, {
+ WindowsInstallsInfo:
+ "resource://gre/modules/components-utils/WindowsInstallsInfo.sys.mjs",
+});
+
+/**
+ * The Windows-only "uninstall" ping, which is saved to disk for the uninstaller to find.
+ * The ping is actually assembled by TelemetryControllerParent.saveUninstallPing().
+ */
+export var UninstallPing = {
+ /**
+ * Maximum number of other installs to count (see
+ * toolkit/components/telemetry/docs/data/uninstall-ping.rst for motivation)
+ */
+ MAX_OTHER_INSTALLS: 11,
+
+ /**
+ * Count other installs of this app, based on the values in the TaskBarIDs registry key.
+ *
+ */
+ getOtherInstallsCount() {
+ return lazy.WindowsInstallsInfo.getInstallPaths(
+ this.MAX_OTHER_INSTALLS,
+ new Set([Services.dirsvc.get("GreBinD", Ci.nsIFile).path])
+ ).size;
+ },
+};