Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SigninPromoItem.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SigninPromoItem.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SigninPromoItem.java |
index 8028f288747bc9effc8dc04ec1fe8fbf53224378..cdb994e0012f84266d205e731d2a1c98f75477b7 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SigninPromoItem.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SigninPromoItem.java |
@@ -6,6 +6,7 @@ |
import android.content.Context; |
import android.support.annotation.DrawableRes; |
+import android.support.v7.widget.RecyclerView; |
import org.chromium.base.ContextUtils; |
import org.chromium.base.metrics.RecordUserAction; |
@@ -53,9 +54,7 @@ public SigninPromoItem() { |
@Override |
public List<NewTabPageItem> getItems() { |
- if (mDismissed) return Collections.emptyList(); |
- if (!mVisible) return Collections.emptyList(); |
- return mItems; |
+ return isShown() ? mItems : Collections.<NewTabPageItem>emptyList(); |
} |
@Override |
@@ -74,6 +73,10 @@ public void setObserver(Observer changeObserver) { |
this.mChangeObserver = changeObserver; |
} |
+ public boolean isShown() { |
+ return !mDismissed && mVisible; |
+ } |
+ |
/** Attempts to show the sign in promo. If the user dismissed it before, it will not be shown.*/ |
public void maybeShow() { |
if (mVisible) return; |
@@ -107,8 +110,12 @@ public void dismiss() { |
* View Holder for {@link SigninPromoItem}. |
*/ |
public static class ViewHolder extends StatusCardViewHolder { |
+ private final int mSeparationSpaceSize; |
+ |
public ViewHolder(NewTabPageRecyclerView parent, UiConfig config) { |
super(parent, config); |
+ mSeparationSpaceSize = parent.getResources().getDimensionPixelSize( |
+ R.dimen.ntp_sign_in_promo_margin_top); |
} |
@DrawableRes |
@@ -118,5 +125,24 @@ protected int selectBackground(boolean hasCardAbove, boolean hasCardBelow) { |
if (hasCardAbove) return R.drawable.ntp_signin_promo_card_bottom; |
return R.drawable.ntp_signin_promo_card_single; |
} |
+ |
+ @Override |
+ public void updateLayoutParams() { |
+ super.updateLayoutParams(); |
+ |
+ if (getAdapterPosition() == RecyclerView.NO_POSITION) return; |
+ |
+ @NewTabPageItem.ViewType |
+ int precedingCardType = |
+ getRecyclerView().getAdapter().getItemViewType(getAdapterPosition() - 1); |
+ |
+ // The sign in promo should stick to the articles of the preceding section, but have |
+ // some space otherwise. |
+ if (precedingCardType != NewTabPageItem.VIEW_TYPE_SNIPPET) { |
+ getParams().topMargin = mSeparationSpaceSize; |
+ } else { |
+ getParams().topMargin = 0; |
+ } |
+ } |
} |
} |