| Index: chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsEventReporterBridge.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsEventReporterBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsEventReporterBridge.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e16dded73493103039a3533abcc157b57ad073c1
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsEventReporterBridge.java
|
| @@ -0,0 +1,104 @@
|
| +// Copyright 2017 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.suggestions;
|
| +
|
| +import org.chromium.chrome.browser.ntp.NewTabPageUma;
|
| +import org.chromium.chrome.browser.ntp.cards.ActionItem;
|
| +import org.chromium.chrome.browser.ntp.snippets.CategoryInt;
|
| +import org.chromium.chrome.browser.ntp.snippets.KnownCategories;
|
| +import org.chromium.chrome.browser.ntp.snippets.SnippetArticle;
|
| +
|
| +/**
|
| + * Exposes methods to report suggestions related events, for UMA or Fetch scheduling purposes.
|
| + */
|
| +public class SuggestionsEventReporterBridge implements SuggestionsEventReporter {
|
| + @Override
|
| + public void onSurfaceOpened() {
|
| + nativeOnSurfaceOpened();
|
| + }
|
| +
|
| + @Override
|
| + public void onPageShown(int[] categories, int[] suggestionsPerCategory) {
|
| + nativeOnPageShown(categories, suggestionsPerCategory);
|
| + }
|
| +
|
| + @Override
|
| + public void onSuggestionShown(SnippetArticle suggestion) {
|
| + nativeOnSuggestionShown(suggestion.getGlobalRank(), suggestion.mCategory,
|
| + suggestion.getPerSectionRank(), suggestion.mPublishTimestampMilliseconds,
|
| + suggestion.mScore, suggestion.mFetchTimestampMilliseconds);
|
| + }
|
| +
|
| + @Override
|
| + public void onSuggestionOpened(SnippetArticle suggestion, int windowOpenDisposition,
|
| + SuggestionsRanker suggestionsRanker) {
|
| + int categoryIndex = suggestionsRanker.getCategoryRank(suggestion.mCategory);
|
| + nativeOnSuggestionOpened(suggestion.getGlobalRank(), suggestion.mCategory, categoryIndex,
|
| + suggestion.getPerSectionRank(), suggestion.mPublishTimestampMilliseconds,
|
| + suggestion.mScore, windowOpenDisposition);
|
| + }
|
| +
|
| + @Override
|
| + public void onSuggestionMenuOpened(SnippetArticle suggestion) {
|
| + nativeOnSuggestionMenuOpened(suggestion.getGlobalRank(), suggestion.mCategory,
|
| + suggestion.getPerSectionRank(), suggestion.mPublishTimestampMilliseconds,
|
| + suggestion.mScore);
|
| + }
|
| + @Override
|
| + public void onMoreButtonShown(ActionItem actionItem) {
|
| + nativeOnMoreButtonShown(actionItem.getCategory(), actionItem.getPerSectionRank());
|
| + }
|
| +
|
| + @Override
|
| + public void onMoreButtonClicked(ActionItem actionItem) {
|
| + @CategoryInt
|
| + int category = actionItem.getCategory();
|
| + nativeOnMoreButtonClicked(category, actionItem.getPerSectionRank());
|
| + switch (category) {
|
| + case KnownCategories.BOOKMARKS:
|
| + NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_BOOKMARKS_MANAGER);
|
| + break;
|
| + // MORE button in both categories leads to the recent tabs manager
|
| + case KnownCategories.FOREIGN_TABS:
|
| + case KnownCategories.RECENT_TABS:
|
| + NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_RECENT_TABS_MANAGER);
|
| + break;
|
| + case KnownCategories.DOWNLOADS:
|
| + NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
|
| + break;
|
| + default:
|
| + // No action associated
|
| + break;
|
| + }
|
| + }
|
| +
|
| + public static void onSuggestionTargetVisited(int category, long visitTimeMs) {
|
| + nativeOnSuggestionTargetVisited(category, visitTimeMs);
|
| + }
|
| +
|
| + public static void onActivityWarmResumed() {
|
| + nativeOnActivityWarmResumed();
|
| + }
|
| +
|
| + public static void onColdStart() {
|
| + nativeOnColdStart();
|
| + }
|
| +
|
| + private static native void nativeOnPageShown(int[] categories, int[] suggestionsPerCategory);
|
| + private static native void nativeOnSuggestionShown(int globalPosition, int category,
|
| + int positionInCategory, long publishTimestampMs, float score, long fetchTimestampMs);
|
| + private static native void nativeOnSuggestionOpened(int globalPosition, int category,
|
| + int categoryIndex, int positionInCategory, long publishTimestampMs, float score,
|
| + int windowOpenDisposition);
|
| + private static native void nativeOnSuggestionMenuOpened(int globalPosition, int category,
|
| + int positionInCategory, long publishTimestampMs, float score);
|
| + private static native void nativeOnMoreButtonShown(int category, int position);
|
| + private static native void nativeOnMoreButtonClicked(int category, int position);
|
| + private static native void nativeOnSurfaceOpened();
|
| +
|
| + private static native void nativeOnActivityWarmResumed();
|
| + private static native void nativeOnColdStart();
|
| + private static native void nativeOnSuggestionTargetVisited(int category, long visitTimeMs);
|
| +}
|
|
|