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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java

Issue 2096073002: Record how often we end up in Chrome from external navigations. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update description Created 4 years, 6 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/externalnav/ExternalNavigationDelegateImpl.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
index 1f3e92d29ee40979c3c4066c8b3e75b407ff8e2e..b1b4a51182be4679ffdd2f44f7a80b2390177260 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
@@ -37,6 +37,7 @@ import org.chromium.chrome.browser.ChromeTabbedActivity2;
import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.document.ChromeLauncherActivity;
import org.chromium.chrome.browser.externalnav.ExternalNavigationHandler.OverrideUrlLoadingResult;
+import org.chromium.chrome.browser.rappor.RapporServiceBridge;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.util.FeatureUtilities;
import org.chromium.chrome.browser.util.UrlUtilities;
@@ -47,6 +48,7 @@ import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.base.WindowAndroid.PermissionCallback;
import org.chromium.webapk.lib.client.WebApkValidator;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -239,13 +241,14 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
@Override
public int countSpecializedHandlers(List<ResolveInfo> infos) {
- return countSpecializedHandlersWithFilter(infos, null);
+ return getSpecializedHandlersWithFilter(infos, null).size();
}
- static int countSpecializedHandlersWithFilter(
+ static ArrayList<String> getSpecializedHandlersWithFilter(
List<ResolveInfo> infos, String filterPackageName) {
+ ArrayList<String> result = new ArrayList<String>();
if (infos == null) {
- return 0;
+ return result;
}
int count = 0;
@@ -266,9 +269,9 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
continue;
}
- ++count;
+ result.add(info.activityInfo.packageName);
}
- return count;
+ return result;
}
/**
@@ -285,7 +288,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
try {
List<ResolveInfo> handlers = context.getPackageManager().queryIntentActivities(
intent, PackageManager.GET_RESOLVED_FILTER);
- return countSpecializedHandlersWithFilter(handlers, packageName) > 0;
+ return getSpecializedHandlersWithFilter(handlers, packageName).size() > 0;
} catch (RuntimeException e) {
logTransactionTooLargeOrRethrow(e, intent);
}
@@ -312,6 +315,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
Context context = getAvailableContext();
if (!(context instanceof Activity)) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
+ recordExternalNavigationPackageName(intent);
} catch (RuntimeException e) {
logTransactionTooLargeOrRethrow(e, intent);
}
@@ -319,6 +323,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
@Override
public boolean startActivityIfNeeded(Intent intent) {
+ boolean result;
gone 2016/06/29 16:30:44 activityWasLaunched? result isn't too meaningful
// Only touches disk on Kitkat. See http://crbug.com/617725 for more context.
StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
StrictMode.allowThreadDiskReads();
@@ -326,10 +331,12 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
forcePdfViewerAsIntentHandlerIfNeeded(mApplicationContext, intent);
Context context = getAvailableContext();
if (context instanceof Activity) {
- return ((Activity) context).startActivityIfNeeded(intent, -1);
+ result = ((Activity) context).startActivityIfNeeded(intent, -1);
} else {
- return false;
+ result = false;
}
+ if (result) recordExternalNavigationPackageName(intent);
+ return result;
} catch (RuntimeException e) {
logTransactionTooLargeOrRethrow(e, intent);
return false;
@@ -338,6 +345,16 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
}
}
+ private void recordExternalNavigationPackageName(Intent intent) {
+ List<String> packages = intent.getStringArrayListExtra(
+ IntentHandler.EXTRA_EXTERNAL_NAV_PACKAGES);
+ if (packages != null) {
gone 2016/06/29 16:30:44 early return instead to avoid the extra indentatio
+ for (String name : packages) {
+ RapporServiceBridge.sampleString("Android.ExternalNavigationOption", name);
+ }
+ }
+ }
+
@Override
public void startIncognitoIntent(final Intent intent, final String referrerUrl,
final String fallbackUrl, final Tab tab, final boolean needsToCloseTab) {
@@ -522,4 +539,10 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
return PDF_EXTENSION.equals(fileExtension);
}
+
+ @Override
+ public void maybeSetAppHandlers(Intent intent, List<ResolveInfo> infos) {
gone 2016/06/29 16:30:44 maybeRecordAppHandlersInIntent?
+ intent.putExtra(IntentHandler.EXTRA_EXTERNAL_NAV_PACKAGES,
+ getSpecializedHandlersWithFilter(infos, null));
+ }
}

Powered by Google App Engine
This is Rietveld 408576698