Chromium Code Reviews| 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. |
| */ |