fune/browser/components/preferences/tests/browser_pdf_disabled.js
Neil Deakin a52b9fb911 Bug 1759984, always show pdf in applications list even when the internal pdf viewer is disabled, r=Gijs,preferences-reviewers
In addition, if someone has pdf set to open internally but then disables the pdf viewer, an error occurs when trying to view a pdf. Handle this case by just asking what to do.

Differential Revision: https://phabricator.services.mozilla.com/D143313
2022-04-12 16:02:28 +00:00

49 lines
1.6 KiB
JavaScript

/* 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();
}
});