diff --git a/mobile/android/tests/browser/robocop/robocop.ini b/mobile/android/tests/browser/robocop/robocop.ini index eb1537ddbcd6..4d685b383b54 100644 --- a/mobile/android/tests/browser/robocop/robocop.ini +++ b/mobile/android/tests/browser/robocop/robocop.ini @@ -138,8 +138,6 @@ skip-if = android_version == "10" || android_version == "18" [src/org/mozilla/gecko/tests/testNativeCrypto.java] [src/org/mozilla/gecko/tests/testReaderModeTitle.java] [src/org/mozilla/gecko/tests/testSessionHistory.java] -# disabled on Android 4.3, bug 1144879 -skip-if = android_version == "18" [src/org/mozilla/gecko/tests/testStateWhileLoading.java] [src/org/mozilla/gecko/tests/testAccessibleCarets.java] diff --git a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/components/AppMenuComponent.java b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/components/AppMenuComponent.java index 3f00a9724754..f40f34049ee1 100644 --- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/components/AppMenuComponent.java +++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/components/AppMenuComponent.java @@ -22,6 +22,7 @@ import org.mozilla.gecko.tests.helpers.WaitHelper; import android.text.TextUtils; import android.view.View; import android.widget.TextView; +import android.widget.RelativeLayout; import com.jayway.android.robotium.solo.Condition; import com.jayway.android.robotium.solo.RobotiumUtils; @@ -184,8 +185,10 @@ public class AppMenuComponent extends BaseComponent { for (TextView textView : textViewList) { if (TextUtils.equals(textView.getText(), text)) { View relativeLayout = (View) textView.getParent(); - View listMenuItemView = (View)relativeLayout.getParent(); - return listMenuItemView; + if (relativeLayout instanceof RelativeLayout) { + View listMenuItemView = (View)relativeLayout.getParent(); + return listMenuItemView; + } } } return null; @@ -196,17 +199,16 @@ public class AppMenuComponent extends BaseComponent { * * Robotium will also try to open the menu if there are no open dialog. * - * @param menuItemText, The title of menu item to open. + * @param menuItemTitle, The title of menu item to open. */ private void pressLegacyMenuItem(final String menuItemTitle) { mSolo.clickOnMenuItem(menuItemTitle, true); } private void pressMenuItem(final String menuItemTitle) { - fAssertTrue("Menu is open", isMenuOpen(menuItemTitle)); - if (!hasLegacyMenu()) { final View menuItemView = findAppMenuItemView(menuItemTitle); + fAssertTrue("Menu is open", isMenuOpen(menuItemView)); fAssertTrue(String.format("The menu item %s is enabled", menuItemTitle), menuItemView.isEnabled()); fAssertEquals(String.format("The menu item %s is visible", menuItemTitle), View.VISIBLE, @@ -214,6 +216,7 @@ public class AppMenuComponent extends BaseComponent { mSolo.clickOnView(menuItemView); } else { + fAssertTrue("Menu is open", isMenuOpen(menuItemTitle)); pressLegacyMenuItem(menuItemTitle); } } @@ -306,7 +309,20 @@ public class AppMenuComponent extends BaseComponent { * @return true if app menu is open. */ private boolean isMenuOpen(String menuItemTitle) { - return mSolo.searchText(menuItemTitle, true); + final View menuItemView = findAppMenuItemView(menuItemTitle); + return isMenuOpen(menuItemView) ? true : mSolo.searchText(menuItemTitle, true); + } + + /** + * If a ListMenuItemView with menuItemTitle is visible then the app menu is open . + * + * @param menuItemView, must be a ListMenuItemView with menuItemTitle. + * You must use findAppMenuItemView(menuItemTitle) to obtain it. + * + * @return true if app menu is open. + */ + private boolean isMenuOpen(View menuItemView) { + return (menuItemView != null) && (menuItemView.getVisibility() == View.VISIBLE); } private void waitForMenuOpen() {