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

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

Issue 2847263003: Add tests to make sure closed CCT activities are not leaked. (Closed)
Patch Set: Revert debugging Created 3 years, 7 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/customtabs/CustomTabActivityTestBase.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTestBase.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTestBase.java
index 92df68327eff74d662ac4012037334400d204200..d21d4e33b64ab2ff13abce42b455e5c514bbf6a0 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTestBase.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTestBase.java
@@ -19,9 +19,13 @@ import org.chromium.content.browser.test.util.Criteria;
import org.chromium.content.browser.test.util.CriteriaHelper;
import java.lang.ref.WeakReference;
+import java.util.Collections;
+import java.util.IdentityHashMap;
import java.util.List;
+import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
+import java.util.concurrent.atomic.AtomicReference;
/**
* Base class for all instrumentation tests that require a {@link CustomTabActivity}.
@@ -42,8 +46,26 @@ public abstract class CustomTabActivityTestBase extends
@Override
protected void startActivityCompletely(Intent intent) {
+ setActivity(launchCustomTabActivityCompletely(intent));
+ }
+
+ /**
+ * Start a {@link CustomTabActivity} with given {@link Intent} and return the
+ * activity started. Note that this function doesn't wait for the activity's
+ * tab to initialize.
+ */
+ protected CustomTabActivity launchCustomTabActivityCompletely(Intent intent) {
+ final Set<Activity> currentActivities =
+ Collections.newSetFromMap(new IdentityHashMap<Activity, Boolean>());
+ for (WeakReference<Activity> ref : ApplicationStatus.getRunningActivities()) {
+ Activity currentActivity = ref.get();
+ if (currentActivity != null) {
+ currentActivities.add(currentActivity);
+ }
+ }
Activity activity = getInstrumentation().startActivitySync(intent);
assertNotNull("Main activity did not start", activity);
+ final AtomicReference<CustomTabActivity> launchedActivity = new AtomicReference<>();
CriteriaHelper.pollUiThread(new Criteria() {
@Override
public boolean isSatisfied() {
@@ -51,14 +73,16 @@ public abstract class CustomTabActivityTestBase extends
for (WeakReference<Activity> ref : list) {
Activity activity = ref.get();
if (activity == null) continue;
+ if (currentActivities.contains(activity)) continue;
if (activity instanceof CustomTabActivity) {
- setActivity(activity);
+ launchedActivity.set((CustomTabActivity) activity);
return true;
}
}
return false;
}
});
+ return launchedActivity.get();
}
/**
@@ -67,13 +91,19 @@ public abstract class CustomTabActivityTestBase extends
*/
protected void startCustomTabActivityWithIntent(Intent intent) throws InterruptedException {
startActivityCompletely(intent);
+ waitForCustomTab(getActivity());
+ }
+
+ /** Wait till the activity's tab is initialized. */
+ protected static void waitForCustomTab(final CustomTabActivity activity)
+ throws InterruptedException {
CriteriaHelper.pollUiThread(new Criteria("Tab never selected/initialized.") {
@Override
public boolean isSatisfied() {
- return getActivity().getActivityTab() != null;
+ return activity.getActivityTab() != null;
}
});
- final Tab tab = getActivity().getActivityTab();
+ final Tab tab = activity.getActivityTab();
final CallbackHelper pageLoadFinishedHelper = new CallbackHelper();
tab.addObserver(new EmptyTabObserver() {
@Override
@@ -99,4 +129,4 @@ public abstract class CustomTabActivityTestBase extends
assertNotNull(tab.getView());
assertTrue(tab.isCurrentlyACustomTab());
}
-}
+}

Powered by Google App Engine
This is Rietveld 408576698