summaryrefslogtreecommitdiffstats
path: root/comm/mail/test/browser/cloudfile/browser_filelinkTelemetry.js
blob: 100cbdd1c65dd25a5b053152fdc69c94c82f73a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

/**
 * Test telemetry related to filelink.
 */

let { TelemetryTestUtils } = ChromeUtils.importESModule(
  "resource://testing-common/TelemetryTestUtils.sys.mjs"
);
let { gMockFilePicker, gMockFilePickReg } = ChromeUtils.import(
  "resource://testing-common/mozmill/AttachmentHelpers.jsm"
);
let { gMockCloudfileManager } = ChromeUtils.import(
  "resource://testing-common/mozmill/CloudfileHelpers.jsm"
);
let {
  add_attachments,
  add_cloud_attachments,
  close_compose_window,
  open_compose_new_mail,
  setup_msg_contents,
} = ChromeUtils.import("resource://testing-common/mozmill/ComposeHelpers.jsm");
let { mc } = ChromeUtils.import(
  "resource://testing-common/mozmill/FolderDisplayHelpers.jsm"
);
let { wait_for_notification_to_stop } = ChromeUtils.import(
  "resource://testing-common/mozmill/NotificationBoxHelpers.jsm"
);
let { cloudFileAccounts } = ChromeUtils.import(
  "resource:///modules/cloudFileAccounts.jsm"
);

let cloudType = "default";
let kInsertNotificationPref =
  "mail.compose.big_attachments.insert_notification";

let maxSize =
  Services.prefs.getIntPref("mail.compose.big_attachments.threshold_kb") * 1024;

add_setup(function () {
  requestLongerTimeout(2);

  gMockCloudfileManager.register(cloudType);
  gMockFilePickReg.register();

  Services.prefs.setBoolPref(kInsertNotificationPref, true);
});

registerCleanupFunction(function () {
  gMockCloudfileManager.unregister(cloudType);
  gMockFilePickReg.unregister();
  Services.prefs.clearUserPref(kInsertNotificationPref);
});

let kBoxId = "compose-notification-bottom";
let kNotificationValue = "bigAttachment";

/**
 * Check that we're counting file size uploaded.
 */
add_task(async function test_filelink_uploaded_size() {
  Services.telemetry.clearScalars();
  let testFile1Size = 495;
  let testFile2Size = 637;
  let totalSize = testFile1Size + testFile2Size;

  gMockFilePicker.returnFiles = collectFiles([
    "./data/testFile1",
    "./data/testFile2",
  ]);

  let provider = cloudFileAccounts.getProviderForType(cloudType);
  let cwc = open_compose_new_mail(mc);
  let account = cloudFileAccounts.createAccount(cloudType);

  add_cloud_attachments(cwc, account, false);
  gMockCloudfileManager.resolveUploads();
  wait_for_notification_to_stop(cwc.window, kBoxId, "bigAttachmentUploading");

  let scalars = TelemetryTestUtils.getProcessScalars("parent", true);
  Assert.equal(
    scalars["tb.filelink.uploaded_size"][provider.displayName],
    totalSize,
    "Count of uploaded size must be correct."
  );
  close_compose_window(cwc);
});

/**
 * Check that we're counting filelink suggestion ignored.
 */
add_task(async function test_filelink_ignored() {
  Services.telemetry.clearScalars();

  let cwc = open_compose_new_mail(mc);
  setup_msg_contents(
    cwc,
    "test@example.org",
    "Testing ignoring filelink suggestion",
    "Hello! "
  );

  // Multiple big attachments should be counted as one ignoring.
  add_attachments(cwc, "https://www.example.com/1", maxSize);
  add_attachments(cwc, "https://www.example.com/2", maxSize + 10);
  add_attachments(cwc, "https://www.example.com/3", maxSize - 1);
  let aftersend = BrowserTestUtils.waitForEvent(cwc.window, "aftersend");
  EventUtils.synthesizeMouseAtCenter(
    cwc.window.document.getElementById("button-send"),
    {},
    cwc.window.document.getElementById("button-send").ownerGlobal
  );
  await aftersend;
  let scalars = TelemetryTestUtils.getProcessScalars("parent");
  Assert.equal(
    scalars["tb.filelink.ignored"],
    1,
    "Count of ignored times must be correct."
  );
  close_compose_window(cwc, true);
  close_compose_window(cwc);
});