Index: chrome/android/javatests/src/org/chromium/chrome/browser/PopupTest.java |
diff --git a/chrome/android/javatests_shell/src/org/chromium/chrome/browser/PopupTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/PopupTest.java |
similarity index 53% |
rename from chrome/android/javatests_shell/src/org/chromium/chrome/browser/PopupTest.java |
rename to chrome/android/javatests/src/org/chromium/chrome/browser/PopupTest.java |
index 38e97d606dcec6300222328255236d00ad571e4d..12e792be1b399fc29271ddb49a4f31df3e982e54 100644 |
--- a/chrome/android/javatests_shell/src/org/chromium/chrome/browser/PopupTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/PopupTest.java |
@@ -7,13 +7,15 @@ package org.chromium.chrome.browser; |
import android.test.suitebuilder.annotation.MediumTest; |
import android.text.TextUtils; |
+import org.chromium.base.ApplicationStatus; |
import org.chromium.base.ThreadUtils; |
import org.chromium.base.test.util.Feature; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.infobar.InfoBar; |
-import org.chromium.chrome.shell.ChromeShellTestBase; |
+import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
+import org.chromium.chrome.browser.util.FeatureUtilities; |
+import org.chromium.chrome.test.ChromeActivityTestCaseBase; |
import org.chromium.chrome.test.util.TestHttpServerClient; |
-import org.chromium.chrome.test.util.browser.TabLoadObserver; |
import org.chromium.content.browser.test.util.Criteria; |
import org.chromium.content.browser.test.util.CriteriaHelper; |
import org.chromium.content.browser.test.util.TouchCommon; |
@@ -22,27 +24,24 @@ import java.util.ArrayList; |
/** |
* Tests whether popup windows appear. |
+ * In document mode, this will end up spawning multiple Activities. |
*/ |
-public class PopupTest extends ChromeShellTestBase { |
+public class PopupTest extends ChromeActivityTestCaseBase<ChromeActivity> { |
private static final String POPUP_HTML_FILENAME = |
TestHttpServerClient.getUrl("chrome/test/data/android/popup_test.html"); |
- private int getNumInfobarsShowing() { |
- return getActivity().getActiveTab().getInfoBarContainer().getInfoBars().size(); |
+ public PopupTest() { |
+ super(ChromeActivity.class); |
} |
- private void loadPageCompletely(Tab tab, String url) throws Exception { |
- TabLoadObserver observer = new TabLoadObserver(tab, url); |
- assertTrue(CriteriaHelper.pollForCriteria(observer)); |
- waitForActiveShellToBeDoneLoading(); |
+ private int getNumInfobarsShowing() { |
+ return getActivity().getActivityTab().getInfoBarContainer().getInfoBars().size(); |
} |
@Override |
public void setUp() throws Exception { |
super.setUp(); |
- launchChromeShellWithBlankPage(); |
- waitForActiveShellToBeDoneLoading(); |
ThreadUtils.runOnUiThread(new Runnable() { |
@Override |
public void run() { |
@@ -51,10 +50,15 @@ public class PopupTest extends ChromeShellTestBase { |
}); |
} |
+ @Override |
+ public void startMainActivity() throws InterruptedException { |
+ startMainActivityOnBlankPage(); |
+ } |
+ |
@MediumTest |
@Feature({"Popup"}) |
public void testPopupInfobarAppears() throws Exception { |
- loadPageCompletely(getActivity().getActiveTab(), POPUP_HTML_FILENAME); |
+ loadUrl(POPUP_HTML_FILENAME); |
assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() { |
@Override |
public boolean isSatisfied() { |
@@ -66,16 +70,21 @@ public class PopupTest extends ChromeShellTestBase { |
@MediumTest |
@Feature({"Popup"}) |
public void testPopupWindowsAppearWhenAllowed() throws Exception { |
- loadPageCompletely(getActivity().getActiveTab(), POPUP_HTML_FILENAME); |
+ boolean isDocumentMode = |
+ FeatureUtilities.isDocumentMode(ApplicationStatus.getApplicationContext()); |
+ final TabModelSelector selector = isDocumentMode |
+ ? ChromeApplication.getDocumentTabModelSelector() |
+ : getActivity().getTabModelSelector(); |
+ |
+ loadUrl(POPUP_HTML_FILENAME); |
assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() { |
@Override |
public boolean isSatisfied() { |
return getNumInfobarsShowing() == 1; |
} |
})); |
- assertEquals(1, getActivity().getTabModelSelector().getTotalTabCount()); |
- ArrayList<InfoBar> infobars = |
- getActivity().getActiveTab().getInfoBarContainer().getInfoBars(); |
+ assertEquals(1, selector.getTotalTabCount()); |
+ ArrayList<InfoBar> infobars = selector.getCurrentTab().getInfoBarContainer().getInfoBars(); |
assertEquals(1, infobars.size()); |
// Wait until the animations are done, then click the "open popups" button. |
@@ -88,17 +97,29 @@ public class PopupTest extends ChromeShellTestBase { |
})); |
TouchCommon.singleClickView(infobar.getContentWrapper().findViewById(R.id.button_primary)); |
+ // Document mode popups appear slowly and sequentially to prevent Android from throwing them |
+ // away, so use a long timeout. http://crbug.com/498920. |
assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() { |
@Override |
public boolean isSatisfied() { |
if (getNumInfobarsShowing() != 0) return false; |
- if (getActivity().getTabModelSelector().getTotalTabCount() != 3) return false; |
- if (!TextUtils.equals("Popup #2", getActivity().getActiveTab().getTitle())) { |
- return false; |
- } |
+ return TextUtils.equals("Popup #3", selector.getCurrentTab().getTitle()); |
+ } |
+ }, 7500, CriteriaHelper.DEFAULT_POLLING_INTERVAL)); |
- return true; |
+ assertEquals(4, selector.getTotalTabCount()); |
+ int currentTabId = selector.getCurrentTab().getId(); |
+ |
+ // Test that revisiting the original page makes popup windows immediately. |
+ loadUrl(POPUP_HTML_FILENAME); |
+ assertTrue(CriteriaHelper.pollForUIThreadCriteria(new Criteria() { |
+ @Override |
+ public boolean isSatisfied() { |
+ if (getNumInfobarsShowing() != 0) return false; |
+ if (selector.getTotalTabCount() != 7) return false; |
+ return TextUtils.equals("Popup #3", selector.getCurrentTab().getTitle()); |
} |
- })); |
+ }, 7500, CriteriaHelper.DEFAULT_POLLING_INTERVAL)); |
+ assertNotSame(currentTabId, selector.getCurrentTab().getId()); |
} |
} |