summaryrefslogtreecommitdiffstats
path: root/browser/components/preferences/tests/browser_pdf_disabled.js
blob: 5b814b39e94e6c7cc695c4bc1c5759e3a2c19395 (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
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

// This test checks that pdf always appears in the applications list even
// both a customized handler doesn't exist and when the internal viewer is
// not enabled.
add_task(async function pdfIsAlwaysPresent() {
  // Try again with the pdf viewer enabled and disabled.
  for (let test of ["enabled", "disabled"]) {
    await SpecialPowers.pushPrefEnv({
      set: [["pdfjs.disabled", test == "disabled"]],
    });

    await openPreferencesViaOpenPreferencesAPI("general", { leaveOpen: true });

    let win = gBrowser.selectedBrowser.contentWindow;

    let container = win.document.getElementById("handlersView");

    // First, find the PDF item.
    let pdfItem = container.querySelector(
      "richlistitem[type='application/pdf']"
    );
    Assert.ok(pdfItem, "pdfItem is present in handlersView when " + test);
    if (pdfItem) {
      pdfItem.scrollIntoView({ block: "center" });
      pdfItem.closest("richlistbox").selectItem(pdfItem);

      // Open its menu
      let list = pdfItem.querySelector(".actionsMenu");
      let popup = list.menupopup;
      let popupShown = BrowserTestUtils.waitForEvent(popup, "popupshown");
      EventUtils.synthesizeMouseAtCenter(list, {}, win);
      await popupShown;

      let handleInternallyItem = list.querySelector(
        `menuitem[action='${Ci.nsIHandlerInfo.handleInternally}']`
      );

      is(
        test == "enabled",
        !!handleInternallyItem,
        "handle internally is present when " + test
      );
    }

    gBrowser.removeCurrentTab();
  }
});