Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsBridge.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsBridge.java |
| index 4625b133e6d759f246aafcec3dd53b68e7adb4b4..1a92b267e4eab761c7ffb263682edf51e14f1979 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsBridge.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetsBridge.java |
| @@ -4,8 +4,11 @@ |
| package org.chromium.chrome.browser.ntp.snippets; |
| +import android.app.Activity; |
| import android.graphics.Bitmap; |
| +import org.chromium.base.ActivityState; |
| +import org.chromium.base.ApplicationStatus; |
| import org.chromium.base.Callback; |
| import org.chromium.base.annotations.CalledByNative; |
| import org.chromium.chrome.browser.ntp.cards.SuggestionsCategoryInfo; |
| @@ -179,6 +182,28 @@ public class SnippetsBridge implements SuggestionsSource { |
| nativeOnNTPInitialized(mNativeSnippetsBridge); |
| } |
| + /** |
| + * Returns a listener creating a bridge to propagate the activity state changes. |
| + */ |
| + public static ApplicationStatus.ActivityStateListener makeActivityStateListener() { |
| + return new ApplicationStatus.ActivityStateListener() { |
| + @Override |
| + public void onActivityStateChange(Activity activity, int newState) { |
| + // This event is only triggered when the start was already warm. |
|
Michael van Ouwerkerk
2017/01/04 14:32:17
Are you sure resume only happens for warm starts?
fhorschig
2017/01/04 15:04:44
I was really surprised to notice this. This might
|
| + if (newState == ActivityState.RESUMED) { |
| + SnippetsBridge snippetsBridge = |
| + new SnippetsBridge(Profile.getLastUsedProfile()); |
| + snippetsBridge.onWarmStartedActivityResumed(); |
| + } |
| + } |
| + }; |
| + } |
| + |
| + public static void notifySchedulerAboutColdStart() { |
| + SnippetsBridge snippetsBridge = new SnippetsBridge(Profile.getLastUsedProfile()); |
| + snippetsBridge.onColdStart(); |
| + } |
| + |
| public static void onSuggestionTargetVisited(int category, long visitTimeMs) { |
| nativeOnSuggestionTargetVisited(category, visitTimeMs); |
| } |
| @@ -208,6 +233,16 @@ public class SnippetsBridge implements SuggestionsSource { |
| nativeFetch(mNativeSnippetsBridge, category, displayedSuggestionIds); |
| } |
| + private void onWarmStartedActivityResumed() { |
| + assert mNativeSnippetsBridge != 0; |
| + nativeOnWarmStartedActivityResumed(mNativeSnippetsBridge); |
| + } |
| + |
| + private void onColdStart() { |
| + assert mNativeSnippetsBridge != 0; |
| + nativeOnColdStart(mNativeSnippetsBridge); |
| + } |
| + |
| @CalledByNative |
| private static List<SnippetArticle> createSuggestionList() { |
| return new ArrayList<>(); |
| @@ -312,6 +347,8 @@ public class SnippetsBridge implements SuggestionsSource { |
| long nativeNTPSnippetsBridge, int category, int position); |
| private native void nativeOnMoreButtonClicked( |
| long nativeNTPSnippetsBridge, int category, int position); |
| + private native void nativeOnWarmStartedActivityResumed(long nativeNTPSnippetsBridge); |
| + private native void nativeOnColdStart(long nativeNTPSnippetsBridge); |
| private static native void nativeOnSuggestionTargetVisited(int category, long visitTimeMs); |
| private static native void nativeOnNTPInitialized(long nativeNTPSnippetsBridge); |
| private native void nativeSetObserver(long nativeNTPSnippetsBridge, SnippetsBridge bridge); |