Chromium Code Reviews| 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; |
| } |