| Index: chrome/android/java_staging/src/org/chromium/chrome/browser/document/DocumentUma.java
|
| diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/document/DocumentUma.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/document/DocumentUma.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8f83a68d01748c346843fd6ce50cbaf6021ebca2
|
| --- /dev/null
|
| +++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/document/DocumentUma.java
|
| @@ -0,0 +1,98 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.browser.document;
|
| +
|
| +import android.content.Intent;
|
| +
|
| +import org.chromium.base.metrics.RecordHistogram;
|
| +import org.chromium.chrome.browser.BookmarkUtils;
|
| +import org.chromium.chrome.browser.IntentHandler;
|
| +import org.chromium.chrome.browser.util.IntentUtils;
|
| +
|
| +/**
|
| + * Records UMA relevant to Document mode.
|
| + */
|
| +public class DocumentUma {
|
| + /**
|
| + * Records what caused a DocumentActivity to be resumed.
|
| + */
|
| + static void recordStartedBy(int source) {
|
| + RecordHistogram.recordSparseSlowlyHistogram("DocumentActivity.StartedBy", source);
|
| + }
|
| +
|
| + public static void recordInDocumentMode(boolean isInDocumentMode) {
|
| + RecordHistogram.recordEnumeratedHistogram(
|
| + "DocumentActivity.RunningMode", isInDocumentMode ? 0 : 1, 2);
|
| + }
|
| +
|
| + /**
|
| + * Records UMA about the Intent fired to create a DocumentActivity.
|
| + * @param packageName Name of the the application package.
|
| + * @param intent Intent used to launch the Activity.
|
| + */
|
| + static void recordStartedBy(String packageName, Intent intent) {
|
| + if (intent == null) {
|
| + recordStartedBy(DocumentMetricIds.STARTED_BY_UNKNOWN);
|
| + return;
|
| + }
|
| +
|
| + int intentSource = DocumentMetricIds.STARTED_BY_UNKNOWN;
|
| + IntentHandler.ExternalAppId appId =
|
| + IntentHandler.determineExternalIntentSource(packageName, intent);
|
| +
|
| + if (intent.hasExtra(IntentHandler.EXTRA_STARTED_BY)) {
|
| + intentSource = IntentUtils.safeGetIntExtra(intent,
|
| + IntentHandler.EXTRA_STARTED_BY, DocumentMetricIds.STARTED_BY_UNKNOWN);
|
| + } else if (IntentUtils.safeGetBooleanExtra(intent,
|
| + BookmarkUtils.REUSE_URL_MATCHING_TAB_ELSE_NEW_TAB, false)) {
|
| + // TODO(dfalcantara): Add a new a boolean instead of piggybacking on this Intent extra.
|
| + intentSource = DocumentMetricIds.STARTED_BY_LAUNCHER;
|
| + } else if (IntentUtils.safeGetBooleanExtra(
|
| + intent, IntentHandler.EXTRA_APPEND_TASK, false)) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_SEARCH_RESULT_PAGE;
|
| + } else if (IntentUtils.safeGetBooleanExtra(
|
| + intent, IntentHandler.EXTRA_PRESERVE_TASK, false)) {
|
| + // TODO(dfalcantara): Figure out how split apart Intents fired by the search box.
|
| + intentSource = DocumentMetricIds.STARTED_BY_SEARCH_SUGGESTION_EXTERNAL;
|
| + } else if (appId == IntentHandler.ExternalAppId.GMAIL) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_EXTERNAL_APP_GMAIL;
|
| + } else if (appId == IntentHandler.ExternalAppId.FACEBOOK) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_EXTERNAL_APP_FACEBOOK;
|
| + } else if (appId == IntentHandler.ExternalAppId.PLUS) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_EXTERNAL_APP_PLUS;
|
| + } else if (appId == IntentHandler.ExternalAppId.TWITTER) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_EXTERNAL_APP_TWITTER;
|
| + } else if (appId == IntentHandler.ExternalAppId.CHROME) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_EXTERNAL_APP_CHROME;
|
| + } else if (appId == IntentHandler.ExternalAppId.HANGOUTS) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_EXTERNAL_APP_HANGOUTS;
|
| + } else if (appId == IntentHandler.ExternalAppId.MESSENGER) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_EXTERNAL_APP_MESSENGER;
|
| + } else if (appId == IntentHandler.ExternalAppId.NEWS) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_EXTERNAL_APP_NEWS;
|
| + } else if (appId == IntentHandler.ExternalAppId.LINE) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_EXTERNAL_APP_LINE;
|
| + } else if (appId == IntentHandler.ExternalAppId.WHATSAPP) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_EXTERNAL_APP_WHATSAPP;
|
| + } else if (appId == IntentHandler.ExternalAppId.GSA) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_EXTERNAL_APP_GSA;
|
| + } else if (appId == IntentHandler.ExternalAppId.OTHER) {
|
| + intentSource = DocumentMetricIds.STARTED_BY_EXTERNAL_APP_OTHER;
|
| + }
|
| +
|
| + if (intentSource == DocumentMetricIds.STARTED_BY_UNKNOWN) {
|
| + android.util.Log.d("DocumentUma", "Unknown source detected");
|
| + }
|
| +
|
| + if (intentSource >= DocumentMetricIds.STARTED_BY_EXTERNAL_APP_GMAIL
|
| + && intentSource < DocumentMetricIds.STARTED_BY_CONTEXTUAL_SEARCH) {
|
| + // Document activity was started from an external app, record which one.
|
| + RecordHistogram.recordEnumeratedHistogram("MobileIntent.PageLoadDueToExternalApp",
|
| + appId.ordinal(), IntentHandler.ExternalAppId.INDEX_BOUNDARY.ordinal());
|
| + }
|
| +
|
| + recordStartedBy(intentSource);
|
| + }
|
| +}
|
|
|