Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2980)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java

Issue 2024933002: [NTP Snippets] Show a status card when there are no available snippets (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased and address comments Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java
index eb82fb536c464761a53733050003a0945fbf1ed1..232276439fa3f7c13e53168d49f8b0f3cd566682 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/snippets/SnippetArticleViewHolder.java
@@ -16,10 +16,8 @@
import android.support.annotation.IntDef;
import android.support.v4.text.BidiFormatter;
import android.text.format.DateUtils;
-import android.view.LayoutInflater;
import android.view.View;
import android.view.View.MeasureSpec;
-import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.ImageView;
import android.widget.TextView;
@@ -32,8 +30,9 @@
import org.chromium.chrome.browser.favicon.FaviconHelper.FaviconImageCallback;
import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.ntp.NewTabPageView.NewTabPageManager;
+import org.chromium.chrome.browser.ntp.cards.CardViewHolder;
import org.chromium.chrome.browser.ntp.cards.NewTabPageListItem;
-import org.chromium.chrome.browser.ntp.cards.NewTabPageViewHolder;
+import org.chromium.chrome.browser.ntp.cards.NewTabPageRecyclerView;
import org.chromium.components.variations.VariationsAssociatedData;
import java.io.IOException;
@@ -45,7 +44,7 @@
/**
* A class that represents the view for a single card snippet.
*/
-public class SnippetArticleViewHolder extends NewTabPageViewHolder implements View.OnClickListener {
+public class SnippetArticleViewHolder extends CardViewHolder {
private static final String TAG = "NtpSnippets";
private static final String PUBLISHER_FORMAT_STRING = "%s - %s";
private static final int FADE_IN_ANIMATION_TIME_MS = 300;
@@ -76,40 +75,28 @@
public static final int DEFAULT_FAVICON = 3;
/**
- * Creates the CardView object to display snippets information
- *
- * @param parent The parent view for the card
- * @return a CardView object for displaying snippets
- */
- public static View createView(ViewGroup parent) {
- return LayoutInflater.from(parent.getContext())
- .inflate(R.layout.new_tab_page_snippets_card, parent, false);
- }
-
- /**
* Constructs a SnippetCardItemView item used to display snippets
*
- * @param cardView The View for the snippet card
+ * @param parent The ViewGroup that is going to contain the newly created view.
* @param manager The SnippetsManager object used to open an article
*/
- public SnippetArticleViewHolder(final View cardView, NewTabPageManager manager) {
- super(cardView);
+ public SnippetArticleViewHolder(NewTabPageRecyclerView parent, NewTabPageManager manager) {
+ super(R.layout.new_tab_page_snippets_card, parent);
mNewTabPageManager = manager;
- cardView.setOnClickListener(this);
- mThumbnailView = (ImageView) cardView.findViewById(R.id.article_thumbnail);
- mHeadlineTextView = (TextView) cardView.findViewById(R.id.article_headline);
- mPublisherTextView = (TextView) cardView.findViewById(R.id.article_publisher);
- mArticleSnippetTextView = (TextView) cardView.findViewById(R.id.article_snippet);
+ mThumbnailView = (ImageView) itemView.findViewById(R.id.article_thumbnail);
+ mHeadlineTextView = (TextView) itemView.findViewById(R.id.article_headline);
+ mPublisherTextView = (TextView) itemView.findViewById(R.id.article_publisher);
+ mArticleSnippetTextView = (TextView) itemView.findViewById(R.id.article_snippet);
mPreDrawObserver = new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
if (mArticle != null && !mArticle.impressionTracked()) {
- Rect r = new Rect(0, 0, cardView.getWidth(), cardView.getHeight());
- cardView.getParent().getChildVisibleRect(cardView, r, null);
+ Rect r = new Rect(0, 0, itemView.getWidth(), itemView.getHeight());
+ itemView.getParent().getChildVisibleRect(itemView, r, null);
// Track impression if at least one third of the snippet is shown.
- if (r.height() >= cardView.getHeight() / 3) mArticle.trackImpression();
+ if (r.height() >= itemView.getHeight() / 3) mArticle.trackImpression();
}
// Proceed with the current drawing pass.
return true;
@@ -117,27 +104,29 @@ public boolean onPreDraw() {
};
// Listen to onPreDraw only if this view is potentially visible (attached to the window).
- cardView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
+ itemView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
@Override
public void onViewAttachedToWindow(View v) {
- cardView.getViewTreeObserver().addOnPreDrawListener(mPreDrawObserver);
+ itemView.getViewTreeObserver().addOnPreDrawListener(mPreDrawObserver);
}
@Override
public void onViewDetachedFromWindow(View v) {
- cardView.getViewTreeObserver().removeOnPreDrawListener(mPreDrawObserver);
+ itemView.getViewTreeObserver().removeOnPreDrawListener(mPreDrawObserver);
}
});
}
@Override
- public void onClick(View v) {
+ public void onCardTapped() {
mNewTabPageManager.openSnippet(mArticle.mUrl);
mArticle.trackClick();
}
@Override
public void onBindViewHolder(NewTabPageListItem article) {
+ super.onBindViewHolder(article);
+
mArticle = (SnippetArticle) article;
mHeadlineTextView.setText(mArticle.mTitle);

Powered by Google App Engine
This is Rietveld 408576698