| Index: chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
|
| index fd2d93a561410358a5caeebce1b2e7c15f0386e6..c40f07e29de871e8b390eb73b229a999d3d661fa 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
|
| @@ -32,6 +32,7 @@ import android.support.customtabs.CustomTabsService;
|
| import android.support.customtabs.CustomTabsServiceConnection;
|
| import android.support.customtabs.CustomTabsSession;
|
| import android.support.customtabs.CustomTabsSessionToken;
|
| +import android.support.test.filters.MediumTest;
|
| import android.support.test.filters.SmallTest;
|
| import android.text.TextUtils;
|
| import android.view.Menu;
|
| @@ -41,6 +42,9 @@ import android.view.ViewGroup;
|
| import android.widget.EditText;
|
| import android.widget.ImageButton;
|
|
|
| +import org.chromium.base.ActivityState;
|
| +import org.chromium.base.ApplicationStatus;
|
| +import org.chromium.base.ApplicationStatus.ActivityStateListener;
|
| import org.chromium.base.ObserverList.RewindableIterator;
|
| import org.chromium.base.PathUtils;
|
| import org.chromium.base.ThreadUtils;
|
| @@ -86,6 +90,7 @@ import org.chromium.content_public.browser.LoadUrlParams;
|
| import org.chromium.content_public.browser.WebContentsObserver;
|
| import org.chromium.net.test.EmbeddedTestServer;
|
| import org.chromium.net.test.util.TestWebServer;
|
| +import org.chromium.ui.mojom.WindowOpenDisposition;
|
|
|
| import java.util.ArrayList;
|
| import java.util.concurrent.Callable;
|
| @@ -1866,6 +1871,74 @@ public class CustomTabActivityTest extends CustomTabActivityTestBase {
|
| new TabsOpenedFromExternalAppTest.ReferrerCriteria(tab, referrerUrl), 2000, 200);
|
| }
|
|
|
| + @MediumTest
|
| + public void testLaunchIncognitoURL() throws Exception {
|
| + Intent intent = createMinimalCustomTabIntent();
|
| + startCustomTabActivityWithIntent(intent);
|
| +
|
| + final CustomTabActivity cctActivity = getActivity();
|
| + final CallbackHelper mCctHiddenCallback = new CallbackHelper();
|
| + final CallbackHelper mTabbedModeShownCallback = new CallbackHelper();
|
| + final AtomicReference<ChromeTabbedActivity> tabbedActivity = new AtomicReference<>();
|
| +
|
| + ActivityStateListener listener = new ActivityStateListener() {
|
| + @Override
|
| + public void onActivityStateChange(Activity activity, int newState) {
|
| + if (activity == cctActivity
|
| + && (newState == ActivityState.STOPPED
|
| + || newState == ActivityState.DESTROYED)) {
|
| + mCctHiddenCallback.notifyCalled();
|
| + }
|
| +
|
| + if (activity instanceof ChromeTabbedActivity && newState == ActivityState.RESUMED) {
|
| + mTabbedModeShownCallback.notifyCalled();
|
| + tabbedActivity.set((ChromeTabbedActivity) activity);
|
| + }
|
| + }
|
| + };
|
| + ApplicationStatus.registerStateListenerForAllActivities(listener);
|
| +
|
| + ThreadUtils.runOnUiThread(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + cctActivity.getActivityTab().getTabWebContentsDelegateAndroid().openNewTab(
|
| + "about:blank", null, null, WindowOpenDisposition.OFF_THE_RECORD, false);
|
| + }
|
| + });
|
| +
|
| + mCctHiddenCallback.waitForCallback("CCT not hidden.", 0);
|
| + mTabbedModeShownCallback.waitForCallback("Tabbed mode not shown.", 0);
|
| +
|
| + CriteriaHelper.pollUiThread(Criteria.equals(true, new Callable<Boolean>() {
|
| + @Override
|
| + public Boolean call() throws Exception {
|
| + return tabbedActivity.get().areTabModelsInitialized();
|
| + }
|
| + }));
|
| +
|
| + CriteriaHelper.pollUiThread(new Criteria() {
|
| + @Override
|
| + public boolean isSatisfied() {
|
| + Tab tab = tabbedActivity.get().getActivityTab();
|
| + if (tab == null) {
|
| + updateFailureReason("Tab is null");
|
| + return false;
|
| + }
|
| + if (!tab.isIncognito()) {
|
| + updateFailureReason("Incognito tab not selected");
|
| + return false;
|
| + }
|
| + if (!TextUtils.equals(tab.getUrl(), "about:blank")) {
|
| + updateFailureReason("Wrong URL loaded in incognito tab");
|
| + return false;
|
| + }
|
| + return true;
|
| + }
|
| + });
|
| +
|
| + ApplicationStatus.unregisterActivityStateListener(listener);
|
| + }
|
| +
|
| /**
|
| * Tests that a Weblite URL from an external app uses the lite_url param when Data Reduction
|
| * Proxy previews are being used.
|
|
|