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); |