summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/compose/test/unit/test_telemetry_compose.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/compose/test/unit/test_telemetry_compose.js')
-rw-r--r--comm/mailnews/compose/test/unit/test_telemetry_compose.js109
1 files changed, 109 insertions, 0 deletions
diff --git a/comm/mailnews/compose/test/unit/test_telemetry_compose.js b/comm/mailnews/compose/test/unit/test_telemetry_compose.js
new file mode 100644
index 0000000000..f48db07293
--- /dev/null
+++ b/comm/mailnews/compose/test/unit/test_telemetry_compose.js
@@ -0,0 +1,109 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * Test telemetry related to message composition.
+ */
+
+ChromeUtils.defineESModuleGetters(this, {
+ TelemetryTestUtils: "resource://testing-common/TelemetryTestUtils.sys.mjs",
+});
+
+const HTML_SCALAR = "tb.compose.format_html";
+const PLAIN_TEXT_SCALAR = "tb.compose.format_plain_text";
+
+/**
+ * Check that we're counting HTML or Plain text when composing.
+ */
+add_task(async function test_compose_format() {
+ Services.telemetry.clearScalars();
+
+ // Bare-bones code to initiate composing a message in given format.
+ let createCompose = function (fmt) {
+ let msgCompose = Cc[
+ "@mozilla.org/messengercompose/compose;1"
+ ].createInstance(Ci.nsIMsgCompose);
+
+ let params = Cc[
+ "@mozilla.org/messengercompose/composeparams;1"
+ ].createInstance(Ci.nsIMsgComposeParams);
+
+ params.format = fmt;
+ msgCompose.initialize(params);
+ };
+
+ // Start composing arbitrary numbers of messages in each format.
+ const NUM_HTML = 7;
+ const NUM_PLAIN = 13;
+ for (let i = 0; i < NUM_HTML; i++) {
+ createCompose(Ci.nsIMsgCompFormat.HTML);
+ }
+ for (let i = 0; i < NUM_PLAIN; i++) {
+ createCompose(Ci.nsIMsgCompFormat.PlainText);
+ }
+
+ // Did we count them correctly?
+ const scalars = TelemetryTestUtils.getProcessScalars("parent");
+ Assert.equal(
+ scalars[HTML_SCALAR],
+ NUM_HTML,
+ HTML_SCALAR + " must have the correct value."
+ );
+ Assert.equal(
+ scalars[PLAIN_TEXT_SCALAR],
+ NUM_PLAIN,
+ PLAIN_TEXT_SCALAR + " must have the correct value."
+ );
+});
+
+/**
+ * Check that we're counting compose type (new/reply/fwd etc) when composing.
+ */
+add_task(async function test_compose_type() {
+ // Bare-bones code to initiate composing a message in given type.
+ let createCompose = function (type) {
+ let msgCompose = Cc[
+ "@mozilla.org/messengercompose/compose;1"
+ ].createInstance(Ci.nsIMsgCompose);
+
+ let params = Cc[
+ "@mozilla.org/messengercompose/composeparams;1"
+ ].createInstance(Ci.nsIMsgComposeParams);
+
+ params.type = type;
+ msgCompose.initialize(params);
+ };
+ const histogram = TelemetryTestUtils.getAndClearHistogram("TB_COMPOSE_TYPE");
+
+ // Start composing arbitrary numbers of messages in each format.
+ const NUM_NEW = 4;
+ const NUM_DRAFT = 7;
+ const NUM_EDIT_TEMPLATE = 3;
+ for (let i = 0; i < NUM_NEW; i++) {
+ createCompose(Ci.nsIMsgCompType.New);
+ }
+ for (let i = 0; i < NUM_DRAFT; i++) {
+ createCompose(Ci.nsIMsgCompType.Draft);
+ }
+ for (let i = 0; i < NUM_EDIT_TEMPLATE; i++) {
+ createCompose(Ci.nsIMsgCompType.EditTemplate);
+ }
+
+ // Did we count them correctly?
+ const snapshot = histogram.snapshot();
+ Assert.equal(
+ snapshot.values[Ci.nsIMsgCompType.New],
+ NUM_NEW,
+ "nsIMsgCompType.New count must be correct"
+ );
+ Assert.equal(
+ snapshot.values[Ci.nsIMsgCompType.Draft],
+ NUM_DRAFT,
+ "nsIMsgCompType.Draft count must be correct"
+ );
+ Assert.equal(
+ snapshot.values[Ci.nsIMsgCompType.EditTemplate],
+ NUM_EDIT_TEMPLATE,
+ "nsIMsgCompType.EditTemplate count must be correct"
+ );
+});