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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.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/cards/SuggestionsSection.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.java
index b83ab1dfb013cf53a32f5caf8ef2aadc21bdf81d..71b7d4b494b5467d5516b4dd1e75fa1cd1ebb60c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SuggestionsSection.java
@@ -93,11 +93,12 @@ public int getItemViewType(int position) {
}
@Override
- public void onBindViewHolder(NewTabPageViewHolder holder, int position) {
+ public void onBindViewHolder(
+ NewTabPageViewHolder holder, int position, List<Object> payloads) {
checkIndex(position);
assert holder instanceof SnippetArticleViewHolder;
((SnippetArticleViewHolder) holder)
- .onBindViewHolder(getSuggestionAt(position), mCategoryInfo);
+ .onBindViewHolder(getSuggestionAt(position), mCategoryInfo, payloads);
}
@Override
@@ -155,6 +156,15 @@ public void dismissItem(int position, Callback<String> itemRemovedCallback) {
suggestionsSource.dismissSuggestion(suggestion);
itemRemovedCallback.onResult(suggestion.mTitle);
}
+
+ public void updateSuggestionOfflineId(SnippetArticle article, Long newId) {
+ Long oldId = article.getOfflinePageOfflineId();
+ article.setOfflinePageOfflineId(newId);
+
+ if ((oldId == null) == (newId == null)) return;
+ notifyItemChanged(mSuggestions.indexOf(article),
+ SnippetArticleViewHolder.PARTIAL_UPDATE_OFFLINE_ID);
+ }
}
private void setupOfflinePageBridgeObserver(NewTabPageManager manager) {
@@ -286,11 +296,8 @@ private void updateSnippetOfflineAvailability(final SnippetArticle article) {
@Override
public void onResult(OfflinePageItem item) {
if (mIsNtpDestroyed) return;
- if (item == null) {
- article.setOfflinePageOfflineId(null);
- return;
- }
- article.setOfflinePageOfflineId(item.getOfflineId());
+ mSuggestionsList.updateSuggestionOfflineId(
+ article, item == null ? null : item.getOfflineId());
}
});
}

Powered by Google App Engine
This is Rietveld 408576698