gecko/toolkit/mozapps/extensions/test/browser/browser_newaddon.js

187 lines
6.7 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
// Tests the new add-on tab
var gProvider;
function loadPage(aURL, aCallback) {
gBrowser.selectedTab = gBrowser.addTab();
gBrowser.loadURI(aURL);
gBrowser.addEventListener("AddonDisplayed", function(event) {
gBrowser.removeEventListener("AddonDisplayed", arguments.callee, false);
aCallback(gBrowser.selectedTab);
});
}
function test() {
waitForExplicitFinish();
gProvider = new MockProvider();
gProvider.createAddons([{
id: "addon1@tests.mozilla.org",
name: "Test 1",
version: "5.3",
userDisabled: true,
operationsRequiringRestart: AddonManager.OP_NEEDS_RESTART_NONE
}, {
id: "addon2@tests.mozilla.org",
name: "Test 2",
version: "7.1",
creator: "Dave Townsend",
userDisabled: true
}]);
run_next_test();
}
function end_test() {
finish();
}
// Tests that ignoring a restartless add-on works
add_test(function() {
loadPage("about:newaddon?id=addon1@tests.mozilla.org", function(aTab) {
var doc = aTab.linkedBrowser.contentDocument;
is(doc.getElementById("name").value, "Test 1 5.3", "Should say the right name");
is_element_hidden(doc.getElementById("author"), "Should be no author displayed");
is_element_hidden(doc.getElementById("location"), "Should be no location displayed");
is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"),
"Should be showing the right buttons");
EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"),
{}, aTab.linkedBrowser.contentWindow);
is(gBrowser.tabs.length, 1, "Page should have been closed");
AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
ok(aAddon.userDisabled, "Add-on should not have been enabled");
ok(!aAddon.isActive, "Add-on should not be running");
run_next_test();
});
});
});
// Tests that enabling a restartless add-on works
add_test(function() {
loadPage("about:newaddon?id=addon1@tests.mozilla.org", function(aTab) {
var doc = aTab.linkedBrowser.contentDocument;
is(doc.getElementById("name").value, "Test 1 5.3", "Should say the right name");
is_element_hidden(doc.getElementById("author"), "Should be no author displayed");
is_element_hidden(doc.getElementById("location"), "Should be no location displayed");
is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"),
"Should be showing the right buttons");
EventUtils.synthesizeMouseAtCenter(doc.getElementById("allow"),
{}, aTab.linkedBrowser.contentWindow);
EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"),
{}, aTab.linkedBrowser.contentWindow);
is(gBrowser.tabs.length, 1, "Page should have been closed");
AddonManager.getAddonByID("addon1@tests.mozilla.org", function(aAddon) {
ok(!aAddon.userDisabled, "Add-on should now have been enabled");
ok(aAddon.isActive, "Add-on should now be running");
run_next_test();
});
});
});
// Tests that ignoring a non-restartless add-on works
add_test(function() {
loadPage("about:newaddon?id=addon2@tests.mozilla.org", function(aTab) {
var doc = aTab.linkedBrowser.contentDocument;
is(doc.getElementById("name").value, "Test 2 7.1", "Should say the right name");
is_element_visible(doc.getElementById("author"), "Should be an author displayed");
is(doc.getElementById("author").value, "By Dave Townsend", "Should have the right author");
is_element_hidden(doc.getElementById("location"), "Should be no location displayed");
is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"),
"Should be showing the right buttons");
EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"),
{}, aTab.linkedBrowser.contentWindow);
is(gBrowser.tabs.length, 1, "Page should have been closed");
AddonManager.getAddonByID("addon2@tests.mozilla.org", function(aAddon) {
ok(aAddon.userDisabled, "Add-on should not have been enabled");
ok(!aAddon.isActive, "Add-on should not be running");
run_next_test();
});
});
});
// Tests that enabling a non-restartless add-on works
add_test(function() {
loadPage("about:newaddon?id=addon2@tests.mozilla.org", function(aTab) {
var doc = aTab.linkedBrowser.contentDocument;
is(doc.getElementById("name").value, "Test 2 7.1", "Should say the right name");
is_element_visible(doc.getElementById("author"), "Should be an author displayed");
is(doc.getElementById("author").value, "By Dave Townsend", "Should have the right author");
is_element_hidden(doc.getElementById("location"), "Should be no location displayed");
is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"),
"Should be showing the right buttons");
EventUtils.synthesizeMouseAtCenter(doc.getElementById("allow"),
{}, aTab.linkedBrowser.contentWindow);
EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"),
{}, aTab.linkedBrowser.contentWindow);
is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("restartPanel"),
"Should be showing the right buttons");
AddonManager.getAddonByID("addon2@tests.mozilla.org", function(aAddon) {
ok(!aAddon.userDisabled, "Add-on should now have been enabled");
ok(!aAddon.isActive, "Add-on should not be running");
ok(doc.getElementById("allow").disabled, "Should have disabled checkbox");
EventUtils.synthesizeMouseAtCenter(doc.getElementById("cancel-button"),
{}, aTab.linkedBrowser.contentWindow);
is(doc.getElementById("buttonDeck").selectedPanel, doc.getElementById("continuePanel"),
"Should be showing the right buttons");
ok(!doc.getElementById("allow").disabled, "Should have enabled checkbox");
ok(aAddon.userDisabled, "Add-on should not have been enabled");
ok(!aAddon.isActive, "Add-on should not be running");
EventUtils.synthesizeMouseAtCenter(doc.getElementById("allow"),
{}, aTab.linkedBrowser.contentWindow);
EventUtils.synthesizeMouseAtCenter(doc.getElementById("continue-button"),
{}, aTab.linkedBrowser.contentWindow);
ok(aAddon.userDisabled, "Add-on should not have been enabled");
ok(!aAddon.isActive, "Add-on should not be running");
is(gBrowser.tabs.length, 1, "Page should have been closed");
run_next_test();
});
});
});