| 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());
|
| }
|
| }
|
|
|