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); |
} |