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..3299b3475d17f7421b75be266886590da408112e 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,32 +28,34 @@ 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; |
private final Footer mFooter; |
- private final SpacingItem mBottomSpacer = new SpacingItem(); |
+ private final SpacingItem mBottomSpacer; |
/** |
* Creates the adapter that will manage all the cards to display on the NTP. |
* |
* @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,19 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
mAllDismissed = new AllDismissedItem(); |
mFooter = new Footer(); |
- mRoot.addChildren( |
- mAboveTheFold, mSections, mSigninPromo, mAllDismissed, mFooter, mBottomSpacer); |
+ if (mAboveTheFoldView == null) { |
+ mAboveTheFold = null; |
+ } else { |
+ mAboveTheFold = new AboveTheFoldItem(); |
+ mRoot.addChild(mAboveTheFold); |
+ } |
+ mRoot.addChildren(mSections, mSigninPromo, mAllDismissed, mFooter); |
+ if (mAboveTheFoldView == null) { |
+ mBottomSpacer = null; |
+ } else { |
+ mBottomSpacer = new SpacingItem(); |
+ mRoot.addChild(mBottomSpacer); |
+ } |
updateAllDismissedVisibility(); |
mRoot.setParent(this); |
@@ -127,6 +141,8 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
} |
public int getAboveTheFoldPosition() { |
+ if (mAboveTheFoldView == null) return RecyclerView.NO_POSITION; |
+ |
return getChildPositionOffset(mAboveTheFold); |
} |
@@ -146,6 +162,8 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
} |
int getBottomSpacerPosition() { |
+ if (mBottomSpacer == null) return RecyclerView.NO_POSITION; |
+ |
return getChildPositionOffset(mBottomSpacer); |
} |
@@ -165,7 +183,7 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
public void onItemRangeInserted(TreeNode child, int itemPosition, int itemCount) { |
assert child == mRoot; |
notifyItemRangeInserted(itemPosition, itemCount); |
- mBottomSpacer.refresh(); |
+ if (mBottomSpacer != null) mBottomSpacer.refresh(); |
updateAllDismissedVisibility(); |
} |
@@ -174,7 +192,7 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
public void onItemRangeRemoved(TreeNode child, int itemPosition, int itemCount) { |
assert child == mRoot; |
notifyItemRangeRemoved(itemPosition, itemCount); |
- mBottomSpacer.refresh(); |
+ if (mBottomSpacer != null) mBottomSpacer.refresh(); |
updateAllDismissedVisibility(); |
} |