Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java |
index 4701a6b175ccf433e3dcb8a43514f6115a880012..de049177a631684af32ac4a7820d7c3c1a9727d1 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java |
@@ -80,6 +80,8 @@ import org.chromium.chrome.browser.metrics.UmaUtils; |
import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; |
import org.chromium.chrome.browser.ntp.NativePageAssassin; |
import org.chromium.chrome.browser.ntp.NewTabPageUma; |
+import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge; |
+import org.chromium.chrome.browser.ntp.snippets.SnippetsConfig; |
import org.chromium.chrome.browser.omaha.OmahaClient; |
import org.chromium.chrome.browser.omnibox.AutocompleteController; |
import org.chromium.chrome.browser.partnercustomizations.HomepageManager; |
@@ -229,6 +231,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode |
private VrShellDelegate mVrShellDelegate; |
+ private ApplicationStatus.ActivityStateListener mSnippetsSchedulerListener; |
+ |
private class TabbedAssistStatusHandler extends AssistStatusHandler { |
public TabbedAssistStatusHandler(Activity activity) { |
super(activity); |
@@ -404,6 +408,14 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode |
mLocaleManager = LocaleManager.getInstance(); |
mLocaleManager.showSearchEnginePromoIfNeeded(this); |
+ if (SnippetsConfig.isEnabled()) { |
+ // The SnippetsBridge propagates the state changes so the scheduler can post |
+ // deferred tasks to refresh outdated snippets. |
+ mSnippetsSchedulerListener = SnippetsBridge.makeActivityStateListener(); |
+ ApplicationStatus.registerStateListenerForActivity( |
+ mSnippetsSchedulerListener, this); |
+ } |
+ |
super.finishNativeInitialization(); |
} finally { |
TraceEvent.end("ChromeTabbedActivity.finishNativeInitialization"); |
@@ -430,6 +442,11 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode |
mLocaleManager.setSnackbarManager(getSnackbarManager()); |
mLocaleManager.startObservingPhoneChanges(); |
+ |
+ // Without any interaction, this start was cold and the listener will ignore it. |
Michael van Ouwerkerk
2017/01/04 14:32:17
Without user interaction, it is the start of the a
fhorschig
2017/01/04 15:04:44
Good lead, added a check and a warm alternative ca
|
+ if (SnippetsConfig.isEnabled() && getLastUserInteractionTime() == 0) { |
+ SnippetsBridge.notifySchedulerAboutColdStart(); |
+ } |
} |
@Override |
@@ -1444,6 +1461,11 @@ public class ChromeTabbedActivity extends ChromeActivity implements OverviewMode |
mVrShellDelegate.destroyVrShell(); |
} |
+ if (mSnippetsSchedulerListener != null) { |
+ ApplicationStatus.unregisterActivityStateListener(mSnippetsSchedulerListener); |
+ mSnippetsSchedulerListener = null; |
+ } |
+ |
super.onDestroyInternal(); |
} |