michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/publicdomain/zero/1.0/ michael@0: */ michael@0: michael@0: // Tests that certain types of addons do not have their version number michael@0: // displayed. This currently only includes lightweight themes. michael@0: michael@0: var gManagerWindow; michael@0: var gCategoryUtilities; michael@0: var gProvider; michael@0: michael@0: function test() { michael@0: waitForExplicitFinish(); michael@0: michael@0: gProvider = new MockProvider(); michael@0: michael@0: gProvider.createAddons([{ michael@0: id: "extension@tests.mozilla.org", michael@0: name: "Extension 1", michael@0: type: "extension", michael@0: version: "123" michael@0: }, { michael@0: id: "theme@tests.mozilla.org", michael@0: name: "Theme 2", michael@0: type: "theme", michael@0: version: "456" michael@0: }, { michael@0: id: "lwtheme@personas.mozilla.org", michael@0: name: "Persona 3", michael@0: type: "theme", michael@0: version: "789" michael@0: }]); michael@0: michael@0: open_manager(null, function(aWindow) { michael@0: gManagerWindow = aWindow; michael@0: gCategoryUtilities = new CategoryUtilities(gManagerWindow); michael@0: run_next_test(); michael@0: }); michael@0: } michael@0: michael@0: function end_test() { michael@0: close_manager(gManagerWindow, finish); michael@0: } michael@0: michael@0: function get(aId) { michael@0: return gManagerWindow.document.getElementById(aId); michael@0: } michael@0: michael@0: function get_node(parent, anonid) { michael@0: return parent.ownerDocument.getAnonymousElementByAttribute(parent, "anonid", anonid); michael@0: } michael@0: michael@0: function open_details(aList, aItem, aCallback) { michael@0: aList.ensureElementIsVisible(aItem); michael@0: EventUtils.synthesizeMouseAtCenter(aItem, { clickCount: 1 }, gManagerWindow); michael@0: EventUtils.synthesizeMouseAtCenter(aItem, { clickCount: 2 }, gManagerWindow); michael@0: wait_for_view_load(gManagerWindow, aCallback); michael@0: } michael@0: michael@0: function check_addon_has_version(aList, aName, aVersion) { michael@0: for (let i = 0; i < aList.itemCount; i++) { michael@0: let item = aList.getItemAtIndex(i); michael@0: if (get_node(item, "name").value === aName) { michael@0: ok(true, "Item with correct name found"); michael@0: is(get_node(item, "version").value, aVersion, "Item has correct version"); michael@0: return item; michael@0: } michael@0: } michael@0: ok(false, "Item with correct name was not found"); michael@0: return null; michael@0: } michael@0: michael@0: add_test(function() { michael@0: gCategoryUtilities.openType("extension", function() { michael@0: info("Extension"); michael@0: let list = gManagerWindow.document.getElementById("addon-list"); michael@0: let item = check_addon_has_version(list, "Extension 1", "123"); michael@0: open_details(list, item, function() { michael@0: is_element_visible(get("detail-version"), "Details view has version visible"); michael@0: is(get("detail-version").value, "123", "Details view has correct version"); michael@0: run_next_test(); michael@0: }); michael@0: }); michael@0: }); michael@0: michael@0: add_test(function() { michael@0: gCategoryUtilities.openType("theme", function() { michael@0: info("Normal theme"); michael@0: let list = gManagerWindow.document.getElementById("addon-list"); michael@0: let item = check_addon_has_version(list, "Theme 2", "456"); michael@0: open_details(list, item, function() { michael@0: is_element_visible(get("detail-version"), "Details view has version visible"); michael@0: is(get("detail-version").value, "456", "Details view has correct version"); michael@0: run_next_test(); michael@0: }); michael@0: }); michael@0: }); michael@0: michael@0: add_test(function() { michael@0: gCategoryUtilities.openType("theme", function() { michael@0: info("Lightweight theme"); michael@0: let list = gManagerWindow.document.getElementById("addon-list"); michael@0: // See that the version isn't displayed michael@0: let item = check_addon_has_version(list, "Persona 3", ""); michael@0: open_details(list, item, function() { michael@0: is_element_hidden(get("detail-version"), "Details view has version hidden"); michael@0: // If the version element is hidden then we don't care about its value michael@0: run_next_test(); michael@0: }); michael@0: }); michael@0: });