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 the eula is shown correctly for search results michael@0: michael@0: var gManagerWindow; michael@0: var gCategoryUtilities; michael@0: michael@0: var gApp = document.getElementById("bundle_brand").getString("brandShortName"); michael@0: var gSearchCount = 0; michael@0: michael@0: function test() { michael@0: requestLongerTimeout(2); michael@0: waitForExplicitFinish(); michael@0: michael@0: // Turn on searching for this test michael@0: Services.prefs.setIntPref(PREF_SEARCH_MAXRESULTS, 15); michael@0: Services.prefs.setCharPref("extensions.getAddons.search.url", TESTROOT + "browser_eula.xml"); 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_node(parent, anonid) { michael@0: return parent.ownerDocument.getAnonymousElementByAttribute(parent, "anonid", anonid); michael@0: } michael@0: michael@0: function installSearchResult(aCallback) { michael@0: var searchBox = gManagerWindow.document.getElementById("header-search"); michael@0: // Search for something different each time michael@0: searchBox.value = "foo" + gSearchCount; michael@0: gSearchCount++; michael@0: michael@0: EventUtils.synthesizeMouseAtCenter(searchBox, { }, gManagerWindow); michael@0: EventUtils.synthesizeKey("VK_RETURN", { }, gManagerWindow); michael@0: michael@0: wait_for_view_load(gManagerWindow, function() { michael@0: let remote = gManagerWindow.document.getElementById("search-filter-remote") michael@0: EventUtils.synthesizeMouseAtCenter(remote, { }, gManagerWindow); michael@0: michael@0: let item = get_addon_element(gManagerWindow, "addon1@tests.mozilla.org"); michael@0: ok(!!item, "Should see the search result in the list"); michael@0: michael@0: let status = get_node(item, "install-status"); michael@0: EventUtils.synthesizeMouseAtCenter(get_node(status, "install-remote-btn"), {}, gManagerWindow); michael@0: michael@0: item.mInstall.addListener({ michael@0: onInstallEnded: function() { michael@0: executeSoon(aCallback); michael@0: } michael@0: }); michael@0: }); michael@0: } michael@0: michael@0: // Install an add-on through the search page, accept the EULA and then undo it michael@0: add_test(function() { michael@0: // Accept the EULA when it appears michael@0: let sawEULA = false; michael@0: wait_for_window_open(function(aWindow) { michael@0: sawEULA = true; michael@0: is(aWindow.location.href, "chrome://mozapps/content/extensions/eula.xul", "Window opened should be correct"); michael@0: is(aWindow.document.getElementById("eula").value, "This is the EULA for this add-on", "EULA should be correct"); michael@0: michael@0: aWindow.document.documentElement.acceptDialog(); michael@0: }); michael@0: michael@0: installSearchResult(function() { michael@0: ok(sawEULA, "Should have seen the EULA"); michael@0: michael@0: AddonManager.getAllInstalls(function(aInstalls) { michael@0: is(aInstalls.length, 1, "Should be one pending install"); michael@0: aInstalls[0].cancel(); michael@0: michael@0: run_next_test(); michael@0: }); michael@0: }); michael@0: });