Index: chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java |
index 993061d5a575feb8e8fb3b12982f7f2dde38a2d5..afd17eaf3a0aa6e4debc432ec5454231a68a14ac 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java |
@@ -23,10 +23,12 @@ import org.chromium.base.ApiCompatibilityUtils; |
import org.chromium.base.Log; |
import org.chromium.base.VisibleForTesting; |
import org.chromium.base.metrics.RecordHistogram; |
+import org.chromium.base.metrics.RecordUserAction; |
import org.chromium.chrome.browser.externalauth.ExternalAuthUtils; |
import org.chromium.chrome.browser.externalnav.ExternalNavigationDelegateImpl; |
import org.chromium.chrome.browser.externalnav.IntentWithGesturesHandler; |
import org.chromium.chrome.browser.omnibox.AutocompleteController; |
+import org.chromium.chrome.browser.rappor.RapporServiceBridge; |
import org.chromium.chrome.browser.search_engines.TemplateUrlService; |
import org.chromium.chrome.browser.tab.Tab; |
import org.chromium.chrome.browser.tabmodel.document.ActivityDelegate; |
@@ -133,6 +135,12 @@ public class IntentHandler { |
public static final String EXTRA_WINDOW_ID = "org.chromium.chrome.browser.window_id"; |
/** |
+ * Records package names of other applications in the system that could have handled |
+ * this intent. |
+ */ |
+ public static final String EXTRA_EXTERNAL_NAV_PACKAGES = "org.chromium.chrome.browser.eenp"; |
+ |
+ /** |
* Fake ComponentName used in constructing TRUSTED_APPLICATION_CODE_EXTRA. |
*/ |
private static ComponentName sFakeComponentName = null; |
@@ -289,6 +297,17 @@ public class IntentHandler { |
externalId.ordinal(), ExternalAppId.INDEX_BOUNDARY.ordinal()); |
} |
+ private void recordChromeIntentPackageHandlers(Intent intent) { |
gone
2016/06/29 16:30:44
Private, but add a javadoc saying exactly what thi
|
+ List<String> packages = IntentUtils.safeGetStringArrayListExtra(intent, |
+ IntentHandler.EXTRA_EXTERNAL_NAV_PACKAGES); |
+ if (packages != null) { |
+ RecordUserAction.record("MobileExternalNavigationReceived"); |
+ for (String name : packages) { |
+ RapporServiceBridge.sampleString("Android.ExternalNavigationNotChosen", name); |
+ } |
+ } |
+ } |
+ |
/** |
* Handles an Intent after the ChromeTabbedActivity decides that it shouldn't ignore the |
* Intent. |
@@ -316,6 +335,7 @@ public class IntentHandler { |
IntentUtils.safeGetStringExtra(intent, Browser.EXTRA_APPLICATION_ID), |
tabIdToBringToFront, hasUserGesture, intent); |
recordExternalIntentSourceUMA(intent); |
+ recordChromeIntentPackageHandlers(intent); |
return true; |
} |