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

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

Issue 2618893003: 📰 Tweak the suggestion ranks for UMA to handle fetchMore (Closed)
Patch Set: rebase, address comments Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.ntp.snippets; 5 package org.chromium.chrome.browser.ntp.snippets;
6 6
7 import android.annotation.SuppressLint; 7 import android.annotation.SuppressLint;
8 import android.content.res.Resources; 8 import android.content.res.Resources;
9 import android.graphics.Bitmap; 9 import android.graphics.Bitmap;
10 import android.graphics.drawable.BitmapDrawable; 10 import android.graphics.drawable.BitmapDrawable;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 private final TextView mHeadlineTextView; 63 private final TextView mHeadlineTextView;
64 private final TextView mPublisherTextView; 64 private final TextView mPublisherTextView;
65 private final TextView mArticleSnippetTextView; 65 private final TextView mArticleSnippetTextView;
66 private final ImageView mThumbnailView; 66 private final ImageView mThumbnailView;
67 private final ImageView mOfflineBadge; 67 private final ImageView mOfflineBadge;
68 private final View mPublisherBar; 68 private final View mPublisherBar;
69 69
70 private FetchImageCallback mImageCallback; 70 private FetchImageCallback mImageCallback;
71 private SnippetArticle mArticle; 71 private SnippetArticle mArticle;
72 private SuggestionsCategoryInfo mCategoryInfo; 72 private SuggestionsCategoryInfo mCategoryInfo;
73 private int mCategoryIndex;
74 private int mPublisherFaviconSizePx; 73 private int mPublisherFaviconSizePx;
75 74
76 private final boolean mUseFaviconService; 75 private final boolean mUseFaviconService;
77 private final UiConfig mUiConfig; 76 private final UiConfig mUiConfig;
78 77
79 /** 78 /**
80 * Constructs a {@link SnippetArticleViewHolder} item used to display snippe ts. 79 * Constructs a {@link SnippetArticleViewHolder} item used to display snippe ts.
81 * 80 *
82 * @param parent The NewTabPageRecyclerView that is going to contain the new ly created view. 81 * @param parent The NewTabPageRecyclerView that is going to contain the new ly created view.
83 * @param manager The NewTabPageManager object used to open an article. 82 * @param manager The NewTabPageManager object used to open an article.
(...skipping 20 matching lines...) Expand all
104 updateLayout(); 103 updateLayout();
105 } 104 }
106 }); 105 });
107 106
108 mUseFaviconService = CardsVariationParameters.isFaviconServiceEnabled(); 107 mUseFaviconService = CardsVariationParameters.isFaviconServiceEnabled();
109 } 108 }
110 109
111 @Override 110 @Override
112 public void onImpression() { 111 public void onImpression() {
113 if (mArticle != null && mArticle.trackImpression()) { 112 if (mArticle != null && mArticle.trackImpression()) {
114 mNewTabPageManager.trackSnippetImpression(mArticle); 113 mNewTabPageManager.getSuggestionsMetricsReporter().onSuggestionShown (mArticle);
115 mRecyclerView.onSnippetImpression(); 114 mRecyclerView.onSnippetImpression();
116 } 115 }
117 } 116 }
118 117
119 @Override 118 @Override
120 public void onCardTapped() { 119 public void onCardTapped() {
121 mNewTabPageManager.openSnippet(WindowOpenDisposition.CURRENT_TAB, mArtic le, mCategoryIndex); 120 mNewTabPageManager.openSnippet(WindowOpenDisposition.CURRENT_TAB, mArtic le);
122 } 121 }
123 122
124 @Override 123 @Override
125 public void openItem(int windowDisposition) { 124 public void openItem(int windowDisposition) {
126 mNewTabPageManager.openSnippet(windowDisposition, mArticle, mCategoryInd ex); 125 mNewTabPageManager.openSnippet(windowDisposition, mArticle);
127 } 126 }
128 127
129 @Override 128 @Override
130 public void removeItem() { 129 public void removeItem() {
131 getRecyclerView().dismissItemWithAnimation(this); 130 getRecyclerView().dismissItemWithAnimation(this);
132 } 131 }
133 132
134 @Override 133 @Override
135 public String getUrl() { 134 public String getUrl() {
136 return mArticle.mUrl; 135 return mArticle.mUrl;
137 } 136 }
138 137
139 @Override 138 @Override
140 public boolean isItemSupported(@ContextMenuItemId int menuItemId) { 139 public boolean isItemSupported(@ContextMenuItemId int menuItemId) {
141 if (mArticle.isDownload()) { 140 if (mArticle.isDownload()) {
142 if (menuItemId == ContextMenuManager.ID_OPEN_IN_INCOGNITO_TAB) retur n false; 141 if (menuItemId == ContextMenuManager.ID_OPEN_IN_INCOGNITO_TAB) retur n false;
143 if (menuItemId == ContextMenuManager.ID_SAVE_FOR_OFFLINE) return fal se; 142 if (menuItemId == ContextMenuManager.ID_SAVE_FOR_OFFLINE) return fal se;
144 return true; 143 return true;
145 } 144 }
146 if (mArticle.isRecentTab()) { 145 if (mArticle.isRecentTab()) {
147 if (menuItemId == ContextMenuManager.ID_REMOVE) return true; 146 if (menuItemId == ContextMenuManager.ID_REMOVE) return true;
148 return false; 147 return false;
149 } 148 }
150 return true; 149 return true;
151 } 150 }
152 151
153 @Override 152 @Override
154 public void onContextMenuCreated() { 153 public void onContextMenuCreated() {
155 mNewTabPageManager.trackSnippetMenuOpened(mArticle); 154 mNewTabPageManager.getSuggestionsMetricsReporter().onSuggestionMenuOpene d(mArticle);
156 } 155 }
157 156
158 @Override 157 @Override
159 protected Delegate getContextMenuDelegate() { 158 protected Delegate getContextMenuDelegate() {
160 return this; 159 return this;
161 } 160 }
162 161
163 /** 162 /**
164 * Updates the layout taking into account screen dimensions and the type of snippet displayed. 163 * Updates the layout taking into account screen dimensions and the type of snippet displayed.
165 */ 164 */
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 SystemClock.elapsedRealtime() - time, TimeUnit.MILLISECONDS) ; 216 SystemClock.elapsedRealtime() - time, TimeUnit.MILLISECONDS) ;
218 } finally { 217 } finally {
219 StrictMode.setThreadPolicy(oldPolicy); 218 StrictMode.setThreadPolicy(oldPolicy);
220 } 219 }
221 // We format the publisher here so that having a publisher name in an RT L language 220 // We format the publisher here so that having a publisher name in an RT L language
222 // doesn't mess up the formatting on an LTR device and vice versa. 221 // doesn't mess up the formatting on an LTR device and vice versa.
223 return String.format(PUBLISHER_FORMAT_STRING, 222 return String.format(PUBLISHER_FORMAT_STRING,
224 BidiFormatter.getInstance().unicodeWrap(article.mPublisher), rel ativeTimeSpan); 223 BidiFormatter.getInstance().unicodeWrap(article.mPublisher), rel ativeTimeSpan);
225 } 224 }
226 225
227 public void onBindViewHolder(SnippetArticle article, SuggestionsCategoryInfo categoryInfo, 226 public void onBindViewHolder(
228 List<Object> payloads, int categoryIndex) { 227 SnippetArticle article, SuggestionsCategoryInfo categoryInfo, List<O bject> payloads) {
229 if (!payloads.isEmpty() && article.equals(mArticle)) { 228 if (!payloads.isEmpty() && article.equals(mArticle)) {
230 performPartialBind(payloads); 229 performPartialBind(payloads);
231 return; 230 return;
232 } 231 }
233 232
234 super.onBindViewHolder(); 233 super.onBindViewHolder();
235 234
236 mArticle = article; 235 mArticle = article;
237 mCategoryInfo = categoryInfo; 236 mCategoryInfo = categoryInfo;
238 mCategoryIndex = categoryIndex;
239 updateLayout(); 237 updateLayout();
240 238
241 mHeadlineTextView.setText(mArticle.mTitle); 239 mHeadlineTextView.setText(mArticle.mTitle);
242 mPublisherTextView.setText(getAttributionString(mArticle)); 240 mPublisherTextView.setText(getAttributionString(mArticle));
243 241
244 // The favicon of the publisher should match the TextView height. 242 // The favicon of the publisher should match the TextView height.
245 int widthSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); 243 int widthSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
246 int heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED) ; 244 int heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED) ;
247 mPublisherTextView.measure(widthSpec, heightSpec); 245 mPublisherTextView.measure(widthSpec, heightSpec);
248 mPublisherFaviconSizePx = mPublisherTextView.getMeasuredHeight(); 246 mPublisherFaviconSizePx = mPublisherTextView.getMeasuredHeight();
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 ApiCompatibilityUtils.setCompoundDrawablesRelative( 411 ApiCompatibilityUtils.setCompoundDrawablesRelative(
414 mPublisherTextView, drawable, null, null, null); 412 mPublisherTextView, drawable, null, null, null);
415 mPublisherTextView.setVisibility(View.VISIBLE); 413 mPublisherTextView.setVisibility(View.VISIBLE);
416 } 414 }
417 415
418 @Override 416 @Override
419 public boolean isDismissable() { 417 public boolean isDismissable() {
420 return !isPeeking(); 418 return !isPeeking();
421 } 419 }
422 } 420 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698