diff -r 000000000000 -r 6474c204b198 mobile/android/base/tests/testAddonManager.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mobile/android/base/tests/testAddonManager.java Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,94 @@ +package org.mozilla.gecko.tests; + +import org.json.JSONObject; +import org.mozilla.gecko.Actions; + +import android.util.DisplayMetrics; + +public class testAddonManager extends PixelTest { + /* This test will check the behavior of the Addons Manager: + First the test will open the Addons Manager from the Menu and then close it + Then the test will open the Addons Manager by visiting about:addons + The test will tap/click on the addons.mozilla.org icon to open the AMO page in a new tab + With the Addons Manager open the test will verify that when it is opened again from the menu no new tab will be opened*/ + + public void testAddonManager() { + Actions.EventExpecter tabEventExpecter; + Actions.EventExpecter contentEventExpecter; + String url = "about:addons"; + + blockForGeckoReady(); + + // Use the menu to open the Addon Manger + selectMenuItem("Add-ons"); + + // Set up listeners to catch the page load we're about to do + tabEventExpecter = mActions.expectGeckoEvent("Tab:Added"); + contentEventExpecter = mActions.expectGeckoEvent("DOMContentLoaded"); + + // Wait for the new tab and page to load + tabEventExpecter.blockForEvent(); + contentEventExpecter.blockForEvent(); + + tabEventExpecter.unregisterListener(); + contentEventExpecter.unregisterListener(); + + // Verify the url + verifyPageTitle("Add-ons"); + + // Close the Add-on Manager + mActions.sendSpecialKey(Actions.SpecialKey.BACK); + + // Load the about:addons page and verify it was loaded + loadAndPaint(url); + verifyPageTitle("Add-ons"); + + // Change the AMO URL so we do not try to navigate to a live webpage + JSONObject jsonPref = new JSONObject(); + try { + jsonPref.put("name", "extensions.getAddons.browseAddons"); + jsonPref.put("type", "string"); + jsonPref.put("value", getAbsoluteUrl("/robocop/robocop_blank_01.html")); + setPreferenceAndWaitForChange(jsonPref); + + } catch (Exception ex) { + mAsserter.ok(false, "exception in testAddonManager", ex.toString()); + } + + // Load AMO page by clicking the AMO icon + DisplayMetrics dm = new DisplayMetrics(); + getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); + + /* Setup the tap to top value + 25px and right value - 25px. + Since the AMO icon is 50x50px this values should set the tap + in the middle of the icon */ + float top = mDriver.getGeckoTop() + 25 * dm.density;; + float right = mDriver.getGeckoLeft() + mDriver.getGeckoWidth() - 25 * dm.density;; + + // Setup wait for tab to spawn and load + tabEventExpecter = mActions.expectGeckoEvent("Tab:Added"); + contentEventExpecter = mActions.expectGeckoEvent("DOMContentLoaded"); + + // Tap on the AMO icon + mSolo.clickOnScreen(right, top); + + // Wait for the new tab and page to load + tabEventExpecter.blockForEvent(); + contentEventExpecter.blockForEvent(); + + tabEventExpecter.unregisterListener(); + contentEventExpecter.unregisterListener(); + + // Verify tab count has increased + verifyTabCount(2); + + // Verify the page was opened + verifyPageTitle("Browser Blank Page 01"); + + // Addons Manager is not opened 2 separate times when opened from the menu + selectMenuItem("Add-ons"); + + // Verify tab count not increased + verifyTabCount(2); + } +}