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

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

Issue 2622793003: 📰 Implement offline badge refresh via partial bind (Closed)
Patch Set: 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 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 7b25f6814d025d243768e504350e9c4fd5727157..913e9c296123fbe5adb79fa84e4437b147e65a65 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
@@ -43,6 +43,7 @@
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.List;
import java.util.concurrent.TimeUnit;
/**
@@ -56,6 +57,8 @@
private static final String FAVICON_SERVICE_FORMAT =
"https://s2.googleusercontent.com/s2/favicons?domain=%s&src=chrome_newtab_mobile&sz=%d&alt=404";
+ public static final int PARTIAL_UPDATE_OFFLINE_ID = 1;
+
private final NewTabPageManager mNewTabPageManager;
private final TextView mHeadlineTextView;
private final TextView mPublisherTextView;
@@ -220,11 +223,14 @@ private static String getAttributionString(SnippetArticle article) {
BidiFormatter.getInstance().unicodeWrap(article.mPublisher), relativeTimeSpan);
}
- public void onBindViewHolder(SnippetArticle article, SuggestionsCategoryInfo categoryInfo) {
- super.onBindViewHolder();
+ public void onBindViewHolder(
+ SnippetArticle article, SuggestionsCategoryInfo categoryInfo, List<Object> payloads) {
+ if (!payloads.isEmpty() && article.equals(mArticle)) {
+ performPartialBind(payloads);
+ return;
+ }
- // No longer listen for offline status changes to the old article.
- if (mArticle != null) mArticle.setOfflineStatusChangeRunnable(null);
+ super.onBindViewHolder();
mArticle = article;
mCategoryInfo = categoryInfo;
@@ -265,22 +271,24 @@ public void onBindViewHolder(SnippetArticle article, SuggestionsCategoryInfo cat
}
mOfflineBadge.setVisibility(View.GONE);
- if (SnippetsConfig.isOfflineBadgeEnabled()) {
- Runnable offlineChecker = new Runnable() {
- @Override
- public void run() {
- if (mArticle.getOfflinePageOfflineId() != null || mArticle.mIsAssetDownload) {
- mOfflineBadge.setVisibility(View.VISIBLE);
- }
- }
- };
- mArticle.setOfflineStatusChangeRunnable(offlineChecker);
- offlineChecker.run();
- }
+ refreshOfflineBadgeVisibility();
mRecyclerView.onSnippetBound(itemView);
}
+ private void refreshOfflineBadgeVisibility() {
+ if (!SnippetsConfig.isOfflineBadgeEnabled()) return;
+ boolean visible = mArticle.getOfflinePageOfflineId() != null || mArticle.mIsAssetDownload;
+ if (visible == (mOfflineBadge.getVisibility() == View.VISIBLE)) return;
+ mOfflineBadge.setVisibility(visible ? View.VISIBLE : View.GONE);
+ }
+
+ private void performPartialBind(List<Object> payload) {
+ if (payload.contains(PARTIAL_UPDATE_OFFLINE_ID)) {
+ refreshOfflineBadgeVisibility();
+ }
+ }
+
private static class FetchImageCallback extends Callback<Bitmap> {
private SnippetArticleViewHolder mViewHolder;
private final SnippetArticle mSnippet;

Powered by Google App Engine
This is Rietveld 408576698