/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ // Bug 590347 // Tests if softblock notifications are exposed in preference to incompatible // notifications when compatibility checking is disabled var gProvider; var gManagerWindow; var gCategoryUtilities; var gApp = document.getElementById("bundle_brand").getString("brandShortName"); var gVersion = Services.appinfo.version; // Opens the details view of an add-on function open_details(aId, aType, aCallback) { requestLongerTimeout(2); gCategoryUtilities.openType(aType, function() { var list = gManagerWindow.document.getElementById("addon-list"); var item = list.firstChild; while (item) { if ("mAddon" in item && item.mAddon.id == aId) { list.ensureElementIsVisible(item); EventUtils.synthesizeMouseAtCenter(item, { clickCount: 1 }, gManagerWindow); EventUtils.synthesizeMouseAtCenter(item, { clickCount: 2 }, gManagerWindow); wait_for_view_load(gManagerWindow, aCallback); return; } item = item.nextSibling; } ok(false, "Should have found the add-on in the list"); }); } function get_list_view_warning_node() { let item = gManagerWindow.document.getElementById("addon-list").firstChild; let found = false; while (item) { if (item.mAddon.name == "Test add-on") { found = true; break; } item = item.nextSibling; } ok(found, "Test add-on node should have been found."); return item.ownerDocument.getAnonymousElementByAttribute(item, "anonid", "warning"); } function get_detail_view_warning_node(aManagerWindow) { if (aManagerWindow) return aManagerWindow.document.getElementById("detail-warning"); return undefined; } function test() { waitForExplicitFinish(); gProvider = new MockProvider(); gProvider.createAddons([{ id: "addon1@tests.mozilla.org", name: "Test add-on", description: "A test add-on", isCompatible: false, blocklistState: Ci.nsIBlocklistService.STATE_SOFTBLOCKED, }]); open_manager(null, function(aWindow) { gManagerWindow = aWindow; gCategoryUtilities = new CategoryUtilities(gManagerWindow); run_next_test(); }); } function end_test() { close_manager(gManagerWindow, function() { finish(); }); } // Check with compatibility checking enabled add_test(function() { gCategoryUtilities.openType("extension", function() { Services.prefs.setBoolPref(PREF_CHECK_COMPATIBILITY, true); let warning_node = get_list_view_warning_node(); is_element_visible(warning_node, "Warning message should be visible"); is(warning_node.textContent, "Test add-on is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); run_next_test(); }); }); add_test(function() { open_details("addon1@tests.mozilla.org", "extension", function() { let warning_node = get_detail_view_warning_node(gManagerWindow); is_element_visible(warning_node, "Warning message should be visible"); is(warning_node.textContent, "Test add-on is incompatible with " + gApp + " " + gVersion + ".", "Warning message should be correct"); Services.prefs.setBoolPref(PREF_CHECK_COMPATIBILITY, false); run_next_test(); }); }); // Check with compatibility checking disabled add_test(function() { gCategoryUtilities.openType("extension", function() { let warning_node = get_list_view_warning_node(); is_element_visible(warning_node, "Warning message should be visible"); is(warning_node.textContent, "Test add-on is known to cause security or stability issues.", "Warning message should be correct"); run_next_test(); }); }); add_test(function() { open_details("addon1@tests.mozilla.org", "extension", function() { let warning_node = get_detail_view_warning_node(gManagerWindow); is_element_visible(warning_node, "Warning message should be visible"); is(warning_node.textContent, "Test add-on is known to cause security or stability issues.", "Warning message should be correct"); run_next_test(); }); });