Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java |
| index 4d748070fe131c247518b1021d03560dd0d965fb..97c1461188237e05c96cf59cdacbb3bbb9160be1 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java |
| @@ -4,6 +4,7 @@ |
| package org.chromium.chrome.browser.ntp.cards; |
| +import android.support.annotation.Nullable; |
| import android.support.v7.widget.RecyclerView; |
| import android.support.v7.widget.RecyclerView.Adapter; |
| import android.support.v7.widget.RecyclerView.ViewHolder; |
| @@ -27,13 +28,15 @@ import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; |
| */ |
| public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements NodeParent { |
| private final NewTabPageManager mNewTabPageManager; |
| + @Nullable |
| private final View mAboveTheFoldView; |
| private final UiConfig mUiConfig; |
| private NewTabPageRecyclerView mRecyclerView; |
| private final InnerNode mRoot; |
| - private final AboveTheFoldItem mAboveTheFold = new AboveTheFoldItem(); |
| + @Nullable |
| + private final AboveTheFoldItem mAboveTheFold; |
| private final SectionList mSections; |
| private final SignInPromo mSigninPromo; |
| private final AllDismissedItem mAllDismissed; |
| @@ -45,14 +48,14 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
| * |
| * @param manager the NewTabPageManager to use to interact with the rest of the system. |
| * @param aboveTheFoldView the layout encapsulating all the above-the-fold elements |
| - * (logo, search box, most visited tiles) |
| + * (logo, search box, most visited tiles), or null if only suggestions should |
| + * be displayed. |
| * @param uiConfig the NTP UI configuration, to be passed to created views. |
| * @param offlinePageBridge the OfflinePageBridge used to determine if articles are available |
| - * offline. |
| - * |
| + * offline. |
| */ |
| - public NewTabPageAdapter(NewTabPageManager manager, View aboveTheFoldView, UiConfig uiConfig, |
| - OfflinePageBridge offlinePageBridge) { |
| + public NewTabPageAdapter(NewTabPageManager manager, @Nullable View aboveTheFoldView, |
| + UiConfig uiConfig, OfflinePageBridge offlinePageBridge) { |
| mNewTabPageManager = manager; |
| mAboveTheFoldView = aboveTheFoldView; |
| mUiConfig = uiConfig; |
| @@ -63,8 +66,13 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
| mAllDismissed = new AllDismissedItem(); |
| mFooter = new Footer(); |
| - mRoot.addChildren( |
| - mAboveTheFold, mSections, mSigninPromo, mAllDismissed, mFooter, mBottomSpacer); |
| + if (mAboveTheFoldView == null) { |
|
Michael van Ouwerkerk
2017/01/04 16:45:35
I worry this will lead to many unhandled edge case
Bernhard Bauer
2017/01/05 12:02:15
Hm, if it is, that assumption is going to be wrong
Michael van Ouwerkerk
2017/01/05 13:58:34
I think it may also fail in ways that are not Null
|
| + mAboveTheFold = null; |
| + } else { |
| + mAboveTheFold = new AboveTheFoldItem(); |
| + mRoot.addChild(mAboveTheFold); |
| + } |
| + mRoot.addChildren(mSections, mSigninPromo, mAllDismissed, mFooter, mBottomSpacer); |
|
dgn
2017/01/04 12:19:43
Is the bottom spacer still necessary? IIRC that wa
Bernhard Bauer
2017/01/05 12:02:15
Done. We need to add some checks to allow the adap
|
| updateAllDismissedVisibility(); |
| mRoot.setParent(this); |
| @@ -127,6 +135,8 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
| } |
| public int getAboveTheFoldPosition() { |
| + if (mAboveTheFoldView == null) return RecyclerView.NO_POSITION; |
| + |
| return getChildPositionOffset(mAboveTheFold); |
| } |