176 lines
4.8 KiB
JavaScript
176 lines
4.8 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
// Bug 566194 - safe mode / security & compatibility check status are not exposed in new addon manager UI
|
|
|
|
async function loadDetail(win, id) {
|
|
let loaded = waitForViewLoad(win);
|
|
// Check the detail view.
|
|
let card = win.document.querySelector(`addon-card[addon-id="${id}"]`);
|
|
EventUtils.synthesizeMouseAtCenter(
|
|
card.querySelector(".addon-name-link"),
|
|
{},
|
|
win
|
|
);
|
|
await loaded;
|
|
}
|
|
|
|
function checkMessageShown(win, type, hasButton) {
|
|
let stack = win.document.querySelector("global-warnings");
|
|
is(stack.childElementCount, 1, "There is one message");
|
|
let messageBar = stack.firstElementChild;
|
|
ok(messageBar, "There is a message bar");
|
|
is(
|
|
messageBar.localName,
|
|
"moz-message-bar",
|
|
"The message bar is a moz-message-bar"
|
|
);
|
|
is_element_visible(messageBar, "Message bar is visible");
|
|
is(messageBar.getAttribute("warning-type"), type);
|
|
if (hasButton) {
|
|
let button = messageBar.querySelector("button");
|
|
is_element_visible(button, "Button is visible");
|
|
is(button.getAttribute("action"), type, "Button action is set");
|
|
}
|
|
}
|
|
|
|
function checkNoMessages(win) {
|
|
let stack = win.document.querySelector("global-warnings");
|
|
if (stack.childElementCount) {
|
|
// The safe mode message is hidden in CSS on the plugin list.
|
|
for (let child of stack.children) {
|
|
is_element_hidden(child, "The message is hidden");
|
|
}
|
|
} else {
|
|
is(stack.childElementCount, 0, "There are no message bars");
|
|
}
|
|
}
|
|
|
|
function clickMessageAction(win) {
|
|
let stack = win.document.querySelector("global-warnings");
|
|
let button = stack.firstElementChild.querySelector("button");
|
|
EventUtils.synthesizeMouseAtCenter(button, {}, win);
|
|
}
|
|
|
|
add_task(async function checkCompatibility() {
|
|
info("Testing compatibility checking warning");
|
|
|
|
info("Setting checkCompatibility to false");
|
|
AddonManager.checkCompatibility = false;
|
|
|
|
let id = "test@mochi.test";
|
|
let extension = ExtensionTestUtils.loadExtension({
|
|
manifest: { browser_specific_settings: { gecko: { id } } },
|
|
useAddonManager: "temporary",
|
|
});
|
|
await extension.startup();
|
|
|
|
let win = await loadInitialView("extension");
|
|
|
|
// Check the extension list view.
|
|
checkMessageShown(win, "check-compatibility", true);
|
|
|
|
// Check the detail view.
|
|
await loadDetail(win, id);
|
|
checkMessageShown(win, "check-compatibility", true);
|
|
|
|
// Check other views.
|
|
let views = ["plugin", "theme"];
|
|
for (let view of views) {
|
|
await switchView(win, view);
|
|
checkMessageShown(win, "check-compatibility", true);
|
|
}
|
|
|
|
// Check the button works.
|
|
info("Clicking 'Enable' button");
|
|
clickMessageAction(win);
|
|
is(
|
|
AddonManager.checkCompatibility,
|
|
true,
|
|
"Check Compatibility pref should be cleared"
|
|
);
|
|
checkNoMessages(win);
|
|
|
|
await closeView(win);
|
|
await extension.unload();
|
|
});
|
|
|
|
add_task(async function checkSecurity() {
|
|
info("Testing update security checking warning");
|
|
|
|
var pref = "extensions.checkUpdateSecurity";
|
|
info("Setting " + pref + " pref to false");
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [[pref, false]],
|
|
});
|
|
|
|
let id = "test-security@mochi.test";
|
|
let extension = ExtensionTestUtils.loadExtension({
|
|
manifest: { browser_specific_settings: { gecko: { id } } },
|
|
useAddonManager: "temporary",
|
|
});
|
|
await extension.startup();
|
|
|
|
let win = await loadInitialView("extension");
|
|
|
|
// Check extension list view.
|
|
checkMessageShown(win, "update-security", true);
|
|
|
|
// Check detail view.
|
|
await loadDetail(win, id);
|
|
checkMessageShown(win, "update-security", true);
|
|
|
|
// Check other views.
|
|
let views = ["plugin", "theme"];
|
|
for (let view of views) {
|
|
await switchView(win, view);
|
|
checkMessageShown(win, "update-security", true);
|
|
}
|
|
|
|
// Check the button works.
|
|
info("Clicking 'Enable' button");
|
|
clickMessageAction(win);
|
|
is(
|
|
Services.prefs.prefHasUserValue(pref),
|
|
false,
|
|
"Check Update Security pref should be cleared"
|
|
);
|
|
checkNoMessages(win);
|
|
|
|
await closeView(win);
|
|
await extension.unload();
|
|
});
|
|
|
|
add_task(async function checkSafeMode() {
|
|
info("Testing safe mode warning");
|
|
|
|
let id = "test-safemode@mochi.test";
|
|
let extension = ExtensionTestUtils.loadExtension({
|
|
manifest: { browser_specific_settings: { gecko: { id } } },
|
|
useAddonManager: "temporary",
|
|
});
|
|
await extension.startup();
|
|
|
|
let win = await loadInitialView("extension");
|
|
|
|
// Check extension list view hidden.
|
|
checkNoMessages(win);
|
|
|
|
let globalWarnings = win.document.querySelector("global-warnings");
|
|
globalWarnings.inSafeMode = true;
|
|
globalWarnings.refresh();
|
|
|
|
// Check detail view.
|
|
await loadDetail(win, id);
|
|
checkMessageShown(win, "safe-mode");
|
|
|
|
// Check other views.
|
|
await switchView(win, "theme");
|
|
checkMessageShown(win, "safe-mode");
|
|
await switchView(win, "plugin");
|
|
checkNoMessages(win);
|
|
|
|
await closeView(win);
|
|
await extension.unload();
|
|
});
|