Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1046)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java

Issue 2327083002: Ntp: restore scroll position. (Closed)
Patch Set: Cleanups. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
index ff1a75b8513ee3d3802bcc1f495e1c046197cf08..977d56b11b12ee5309020ae3588fb3fcfa94ed10 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
@@ -101,6 +101,9 @@ public class NewTabPage
private static final int CTA_IMAGE_CLICKED = 1;
private static final int ANIMATED_LOGO_CLICKED = 2;
+ // Key for the scroll position data that may be stored in a navigation entry.
+ private static final String NAVIGATION_ENTRY_SCROLL_POSITION_KEY = "NewTabPageScrollPosition";
+
private static MostVisitedSites sMostVisitedSitesForTests;
private final Tab mTab;
@@ -644,6 +647,12 @@ public class NewTabPage
public void onHidden(Tab tab) {
if (mIsLoaded) recordNTPInteractionTime();
}
+
+ @Override
+ public void onPageLoadStarted(Tab tab, String url) {
+ mTab.setLastCommittedNavigationEntryExtraData(NAVIGATION_ENTRY_SCROLL_POSITION_KEY,
+ Integer.toString(mNewTabPageView.getScrollPosition()));
+ }
};
mTab.addObserver(mTabObserver);
mMostVisitedSites = buildMostVisitedSites(mProfile);
@@ -656,7 +665,8 @@ public class NewTabPage
LayoutInflater inflater = LayoutInflater.from(activity);
mNewTabPageView = (NewTabPageView) inflater.inflate(R.layout.new_tab_page_view, null);
- mNewTabPageView.initialize(mNewTabPageManager, mSearchProviderHasLogo, mSnippetsBridge);
+ mNewTabPageView.initialize(mNewTabPageManager, mSearchProviderHasLogo, mSnippetsBridge,
+ getScrollPositionFromNavigationEntry());
RecordHistogram.recordBooleanHistogram(
"NewTabPage.MobileIsUserOnline", NetworkChangeNotifier.isOnline());
@@ -815,6 +825,17 @@ public class NewTabPage
"NewTabPage.TimeSpent", System.nanoTime() - mLastShownTimeNs, TimeUnit.NANOSECONDS);
}
+ private int getScrollPositionFromNavigationEntry() {
+ String scrollPositionData =
+ mTab.getLastCommittedNavigationEntryExtraData(NAVIGATION_ENTRY_SCROLL_POSITION_KEY);
+ try {
+ return Integer.parseInt(scrollPositionData);
+ } catch (NumberFormatException e) {
+ // Sometimes there is no data in the navigation entry.
+ return 0;
Bernhard Bauer 2016/09/16 15:02:50 Would it be slightly nicer to return NO_POSITION h
Michael van Ouwerkerk 2016/09/16 16:35:05 Done.
+ }
+ }
+
/**
* @return Whether the NTP has finished loaded.
*/

Powered by Google App Engine
This is Rietveld 408576698