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

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: Addressing comments 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..90ef41b24c55bfe454b25e1ee16a8f9092b24e50 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
@@ -30,6 +30,7 @@ import org.chromium.base.ApplicationStatus;
import org.chromium.base.ContextUtils;
import org.chromium.base.PathUtils;
import org.chromium.base.ThreadUtils;
+import org.chromium.base.metrics.RecordUserAction;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeFeatureList;
@@ -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);
+ RecordUserAction.record("MobileExternalNavigationDispatched");
} catch (RuntimeException e) {
logTransactionTooLargeOrRethrow(e, intent);
}
@@ -319,6 +323,7 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
@Override
public boolean startActivityIfNeeded(Intent intent) {
+ boolean activityWasLaunched;
// 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);
+ activityWasLaunched = ((Activity) context).startActivityIfNeeded(intent, -1);
} else {
- return false;
+ activityWasLaunched = false;
}
+ if (activityWasLaunched) RecordUserAction.record("MobileExternalNavigationDispatched");
+ return activityWasLaunched;
} catch (RuntimeException e) {
logTransactionTooLargeOrRethrow(e, intent);
return false;
@@ -522,4 +529,10 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
return PDF_EXTENSION.equals(fileExtension);
}
+
+ @Override
+ public void maybeRecordAppHandlersInIntent(Intent intent, List<ResolveInfo> infos) {
+ intent.putExtra(IntentHandler.EXTRA_EXTERNAL_NAV_PACKAGES,
+ getSpecializedHandlersWithFilter(infos, null));
+ }
}

Powered by Google App Engine
This is Rietveld 408576698