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

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

Issue 2727483002: Instant Apps: refactor logic to encapsulate in the Instant Apps Handler. (Closed)
Patch Set: Fix findbugs issue. Created 3 years, 10 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/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
index 0d3796fa1a919dadd74ee4bba3237a7c8fdf72bf..92c5a8089df4b5d861f2602567ef2b8164a3450a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.instantapps;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.StrictMode;
import android.os.SystemClock;
@@ -14,6 +15,7 @@ import android.provider.Browser;
import org.chromium.base.BuildInfo;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
+import org.chromium.base.VisibleForTesting;
import org.chromium.base.metrics.CachedMetrics.EnumeratedHistogramSample;
import org.chromium.base.metrics.CachedMetrics.TimesHistogramSample;
import org.chromium.chrome.browser.AppHooks;
@@ -58,6 +60,17 @@ public class InstantAppsHandler {
private static final String BROWSER_LAUNCH_REASON =
"com.google.android.gms.instantapps.BROWSER_LAUNCH_REASON";
+ private static final String SUPERVISOR_PKG = "com.google.android.instantapps.supervisor";
+
+ private static final String[] SUPERVISOR_START_ACTIONS = {
+ "com.google.android.instantapps.START", "com.google.android.instantapps.nmr1.INSTALL",
+ "com.google.android.instantapps.nmr1.VIEW"};
+
+ // Instant Apps system resolver activity on N-MR1+.
+ @VisibleForTesting
+ public static final String EPHEMERAL_INSTALLER_CLASS =
+ "com.google.android.gms.instantapps.routing.EphemeralInstallerActivity";
+
/** Finch experiment name. */
private static final String INSTANT_APPS_EXPERIMENT_NAME = "InstantApps";
@@ -110,6 +123,23 @@ public class InstantAppsHandler {
}
/**
+ * Checks whether {@param intent} is for an Instant App. Considers both package and actions that
+ * would resolve to Supervisor.
+ * @return Whether the given intent is going to open an Instant App.
+ */
+ public static boolean isIntentToInstantApp(Intent intent) {
+ if (SUPERVISOR_PKG.equals(intent.getPackage())) return true;
+
+ String intentAction = intent.getAction();
+ for (String action : SUPERVISOR_START_ACTIONS) {
+ if (action.equals(intentAction)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
* Record how long the handleIntent() method took.
* @param startTime The timestamp for handleIntent start time.
*/
@@ -323,4 +353,13 @@ public class InstantAppsHandler {
public Intent getInstantAppIntentForUrl(String url) {
return null;
}
+
+ /**
+ * Whether the given ResolveInfo object refers to Instant Apps as a launcher.
+ * @param info The resolve info.
+ */
+ public boolean isInstantAppResolveInfo(ResolveInfo info) {
+ if (info == null || info.activityInfo == null) return false;
+ return EPHEMERAL_INSTALLER_CLASS.equals(info.activityInfo.name);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698