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

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

Issue 2550413007: Instant Apps: Add instrumentation tests. (Closed)
Patch Set: Fix test expectation. Created 4 years 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
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandlerTest.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/javatests/src/org/chromium/chrome/browser/instantapps/InstantAppsHandlerTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/instantapps/InstantAppsHandlerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/instantapps/InstantAppsHandlerTest.java
index ff77e92c9a68c939444daadc9a3698593692a3db..9705f8cc92601d8824e170279733b80968f88764 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/instantapps/InstantAppsHandlerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/instantapps/InstantAppsHandlerTest.java
@@ -4,27 +4,38 @@
package org.chromium.chrome.browser.instantapps;
+import android.app.Instrumentation;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.net.Uri;
import android.nfc.NfcAdapter;
import android.provider.Browser;
-import android.test.InstrumentationTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import org.chromium.base.ContextUtils;
+import org.chromium.base.ThreadUtils;
+import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.IntentHandler;
+import org.chromium.chrome.browser.ShortcutHelper;
+import org.chromium.chrome.test.ChromeActivityTestCaseBase;
+import org.chromium.content_public.browser.WebContents;
/**
* Unit tests for {@link InstantAppsHandler}.
*/
-public class InstantAppsHandlerTest extends InstrumentationTestCase {
-
+public class InstantAppsHandlerTest extends ChromeActivityTestCaseBase<ChromeActivity> {
private TestInstantAppsHandler mHandler;
private Context mContext;
private static final Uri URI = Uri.parse("http://sampleurl.com/foo");
+ private static final String INSTANT_APP_URL = "http://sampleapp.com/boo";
+ private static final Uri REFERRER_URI = Uri.parse("http://www.wikipedia.org/");
+
+ public InstantAppsHandlerTest() {
+ super(ChromeActivity.class);
+ }
private Intent createViewIntent() {
return new Intent(Intent.ACTION_VIEW, URI);
@@ -99,6 +110,13 @@ public class InstantAppsHandlerTest extends InstrumentationTestCase {
}
@SmallTest
+ public void testInstantAppsDisabled_launchFromShortcut() {
+ Intent i = createViewIntent();
+ i.putExtra(ShortcutHelper.EXTRA_SOURCE, 1);
+ assertFalse(mHandler.handleIncomingIntent(mContext, i, false));
+ }
+
+ @SmallTest
public void testChromeNotDefault() {
SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
SharedPreferences.Editor editor = prefs.edit();
@@ -134,11 +152,99 @@ public class InstantAppsHandlerTest extends InstrumentationTestCase {
assertTrue(mHandler.handleIncomingIntent(getInstrumentation().getContext(), i, false));
}
+ @SmallTest
+ public void testHandleNavigation_noExperiment() {
+ SharedPreferences prefs = ContextUtils.getAppSharedPreferences();
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putBoolean("applink.app_link_enabled", false);
+ editor.apply();
+
+ assertFalse(mHandler.handleNavigation(mContext, INSTANT_APP_URL, REFERRER_URI, null));
+ assertFalse(mHandler.mLaunchInstantApp);
+ assertFalse(mHandler.mStartedAsyncCall);
+ }
+
+ @SmallTest
+ public void testHandleNavigation_startAsyncCheck() {
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ assertFalse(mHandler.handleNavigation(mContext, INSTANT_APP_URL, REFERRER_URI,
+ getActivity().getTabModelSelector().getCurrentTab().getWebContents()));
+ }
+ });
+ assertFalse(mHandler.mLaunchInstantApp);
+ assertTrue(mHandler.mStartedAsyncCall);
+ }
+
+ @SmallTest
+ public void testLaunchFromBanner() {
+ // Intent to supervisor
+ final Intent i = new Intent(Intent.ACTION_MAIN);
+ i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+ Instrumentation.ActivityMonitor monitor = getInstrumentation().addMonitor(
+ new IntentFilter(Intent.ACTION_MAIN), null, true);
+
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ mHandler.launchFromBanner(new InstantAppsBannerData(
+ "App", null, INSTANT_APP_URL, REFERRER_URI, i, "Launch",
+ getActivity().getTabModelSelector().getCurrentTab().getWebContents()));
+ }
+ });
+
+ // Started instant apps intent
+ assertEquals(1, monitor.getHits());
+
+ assertEquals(REFERRER_URI, i.getParcelableExtra(Intent.EXTRA_REFERRER));
+ assertTrue(i.getBooleanExtra(InstantAppsHandler.IS_REFERRER_TRUSTED_EXTRA, false));
+ assertTrue(i.getBooleanExtra(InstantAppsHandler.IS_USER_CONFIRMED_LAUNCH_EXTRA, false));
+ assertEquals(mContext.getPackageName(),
+ i.getStringExtra(InstantAppsHandler.TRUSTED_REFERRER_PKG_EXTRA));
+
+ // After a banner launch, test that the next launch happens automatically
+
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ assertTrue(mHandler.handleNavigation(mContext, INSTANT_APP_URL, REFERRER_URI,
+ getActivity().getTabModelSelector().getCurrentTab().getWebContents()));
+ }
+ });
+ assertFalse(mHandler.mStartedAsyncCall);
+ assertTrue(mHandler.mLaunchInstantApp);
+ }
+
+ @Override
+ public void startMainActivity() throws InterruptedException {
+ startMainActivityOnBlankPage();
+ }
+
static class TestInstantAppsHandler extends InstantAppsHandler {
+ // Keeps track of whether startCheckForInstantApps() has been called.
+ public volatile boolean mStartedAsyncCall;
+ // Keeps track of whether launchInstantAppForNavigation() has been called.
+ public volatile boolean mLaunchInstantApp;
+
@Override
protected boolean tryLaunchingInstantApp(Context context, Intent intent,
boolean isCustomTabsIntent, Intent fallbackIntent) {
return true;
}
+
+ @Override
+ protected boolean launchInstantAppForNavigation(Context context, String url, Uri referrer) {
+ mLaunchInstantApp = true;
+ return true;
+ }
+
+ @Override
+ protected boolean startCheckForInstantApps(Context context, String url, Uri referrer,
+ WebContents webContents) {
+ mStartedAsyncCall = true;
+ return false;
+ }
}
}
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandlerTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698