| 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 0558282a008b06940c525989c6c0bdeba465392a..9af358449ac4160b8285945afbf4e7187675f9fd 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
|
| @@ -69,7 +69,7 @@
|
| private class ItemTouchCallbacks extends ItemTouchHelper.Callback {
|
| @Override
|
| public void onSwiped(ViewHolder viewHolder, int direction) {
|
| - mRecyclerView.onItemDismissStarted(viewHolder);
|
| + mRecyclerView.onItemDismissStarted(viewHolder.itemView);
|
| NewTabPageAdapter.this.dismissItem(viewHolder.getAdapterPosition());
|
| }
|
|
|
| @@ -79,7 +79,7 @@
|
| // not mean that the user went all the way and dismissed the item before releasing it.
|
| // We need to check that the item has been removed.
|
| if (viewHolder.getAdapterPosition() == RecyclerView.NO_POSITION) {
|
| - mRecyclerView.onItemDismissFinished(viewHolder);
|
| + mRecyclerView.onItemDismissFinished(viewHolder.itemView);
|
| }
|
|
|
| super.clearView(recyclerView, viewHolder);
|
| @@ -364,10 +364,10 @@
|
| }
|
|
|
| public int getFirstCardPosition() {
|
| - for (int i = 0; i < getItemCount(); ++i) {
|
| - if (CardViewHolder.isCard(getItemViewType(i))) return i;
|
| - }
|
| - return RecyclerView.NO_POSITION;
|
| + // TODO(mvanouwerkerk): Don't rely on getFirstHeaderPosition() here.
|
| + int firstHeaderPosition = getFirstHeaderPosition();
|
| + if (firstHeaderPosition == RecyclerView.NO_POSITION) return RecyclerView.NO_POSITION;
|
| + return firstHeaderPosition + 1;
|
| }
|
|
|
| public int getLastContentItemPosition() {
|
| @@ -414,7 +414,7 @@
|
| // TODO(treib,bauerb): Preserve the order of categories we got from getCategories.
|
| mGroups.addAll(mSections.values());
|
| mGroups.add(mSigninPromo);
|
| - if (hasVisibleBelowTheFoldItems()) {
|
| + if (!mSections.isEmpty()) {
|
| mGroups.add(mFooter);
|
| mGroups.add(mBottomSpacer);
|
| }
|
| @@ -430,7 +430,7 @@
|
|
|
| notifyItemRangeRemoved(startPos, removedItems);
|
|
|
| - if (!hasVisibleBelowTheFoldItems()) {
|
| + if (mSections.isEmpty()) {
|
| mGroups.remove(mFooter);
|
| mGroups.remove(mBottomSpacer);
|
| notifyItemRangeRemoved(startPos + removedItems, 2);
|
| @@ -556,13 +556,6 @@
|
| private void dismissPromo() {
|
| // TODO(dgn): accessibility announcement.
|
| mSigninPromo.dismiss();
|
| -
|
| - if (!hasVisibleBelowTheFoldItems()) {
|
| - int footerPosition = getLastContentItemPosition();
|
| - mGroups.remove(mFooter);
|
| - mGroups.remove(mBottomSpacer);
|
| - notifyItemRangeRemoved(footerPosition, 2);
|
| - }
|
| }
|
|
|
| /**
|
| @@ -577,9 +570,9 @@
|
| }
|
|
|
| /**
|
| - * Returns another view holder that should be dismissed at the same time as the provided one.
|
| + * Returns another view holder that should be dismissed as the same time as the provided one.
|
| */
|
| - public ViewHolder getDismissSibling(ViewHolder viewHolder) {
|
| + private ViewHolder getDismissSibling(ViewHolder viewHolder) {
|
| int swipePos = viewHolder.getAdapterPosition();
|
| ItemGroup group = getGroup(swipePos);
|
|
|
| @@ -590,10 +583,6 @@
|
| if (siblingPosDelta == 0) return null;
|
|
|
| return mRecyclerView.findViewHolderForAdapterPosition(siblingPosDelta + swipePos);
|
| - }
|
| -
|
| - private boolean hasVisibleBelowTheFoldItems() {
|
| - return !mSections.isEmpty() || mSigninPromo.isShown();
|
| }
|
|
|
| @VisibleForTesting
|
|
|