Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3068)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/PopupTest.java

Issue 1229853006: [Document mode] Allow multiple popup windows to appear. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Uploading for realz Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());
}
}

Powered by Google App Engine
This is Rietveld 408576698