| 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 69a5f58ea060b00ac162c91e553e96da78d1a234..f52a34e42e795de442ea4d58042e77768f7aeed1 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;
|
| @@ -52,9 +53,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
|
| @@ -73,6 +72,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;
|
| @@ -106,8 +109,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
|
| @@ -117,5 +124,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;
|
| + }
|
| + }
|
| }
|
| }
|
|
|