summaryrefslogtreecommitdiffstats
path: root/comm/mail/components/extensions/test/browser/browser_ext_commands_onCommand_bug1845236.js
blob: 3a240cc1ce519f8297ba2d76d075ed5f31b81fb2 (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
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";

add_task(async function test_multiple_messages_selected() {
  let account = createAccount();
  let rootFolder = account.incomingServer.rootFolder;
  let subFolders = rootFolder.subFolders;
  createMessages(subFolders[0], 2);
  await TestUtils.waitForCondition(
    () => subFolders[0].messages.hasMoreElements(),
    "Messages should be added to folder"
  );

  async function background() {
    browser.commands.onCommand.addListener((commandName, activeTab) => {
      browser.test.sendMessage("oncommand event received", {
        commandName,
        activeTab,
      });
    });

    let { messages } = await browser.messages.query({});
    await browser.mailTabs.setSelectedMessages(messages.map(m => m.id));
    let { messages: selectedMessages } =
      await browser.mailTabs.getSelectedMessages();
    browser.test.assertEq(
      selectedMessages.length,
      2,
      "Should have two messages selected"
    );

    browser.test.sendMessage("ready");
  }

  let extension = ExtensionTestUtils.loadExtension({
    manifest: {
      permissions: ["accountsRead", "messagesRead"],
      commands: {
        "test-multi-message": {
          suggested_key: {
            default: "Ctrl+Up",
          },
        },
      },
    },
    background,
  });

  await extension.startup();
  await extension.awaitMessage("ready");

  // Trigger the registered command.
  await BrowserTestUtils.synthesizeKey(
    "VK_UP",
    {
      accelKey: true,
    },
    window.browsingContext
  );
  let message = await extension.awaitMessage("oncommand event received");
  is(
    message.commandName,
    "test-multi-message",
    `Expected onCommand listener to fire with the correct name: test-multi-message`
  );
  is(
    message.activeTab.type,
    "mail",
    `Expected onCommand listener to fire with the correct tab type: mail`
  );

  await extension.unload();
});