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