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 088ee0ac5b9c8190e1ce233fe6a6d697bf86370b..0abe2543ad8b9dfbfaa43a920f0e9aeff4dc03b7 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 |
@@ -9,6 +9,7 @@ |
import org.chromium.base.VisibleForTesting; |
import org.chromium.chrome.browser.ntp.NewTabPage.DestructionObserver; |
import org.chromium.chrome.browser.ntp.NewTabPageView.NewTabPageManager; |
+import org.chromium.chrome.browser.ntp.cards.SectionList.SuggestionRanker; |
import org.chromium.chrome.browser.ntp.snippets.CategoryInt; |
import org.chromium.chrome.browser.ntp.snippets.CategoryStatus.CategoryStatusEnum; |
import org.chromium.chrome.browser.ntp.snippets.SectionHeader; |
@@ -34,6 +35,7 @@ |
private final Delegate mDelegate; |
private final SuggestionsCategoryInfo mCategoryInfo; |
private final OfflinePageBridge mOfflinePageBridge; |
+ private final SuggestionRanker mSuggestionRanker; |
// Children |
private final SectionHeader mHeader; |
@@ -59,11 +61,12 @@ |
void dismissSection(SuggestionsSection section); |
} |
- public SuggestionsSection(Delegate delegate, NewTabPageManager manager, |
+ public SuggestionsSection(Delegate delegate, NewTabPageManager manager, SuggestionRanker ranker, |
OfflinePageBridge offlinePageBridge, SuggestionsCategoryInfo info) { |
mDelegate = delegate; |
mCategoryInfo = info; |
mOfflinePageBridge = offlinePageBridge; |
+ mSuggestionRanker = ranker; |
mHeader = new SectionHeader(info.getTitle()); |
mSuggestionsList = new SuggestionsList(manager, info); |
@@ -248,8 +251,14 @@ public void onItemRangeRemoved(TreeNode child, int index, int count) { |
@Override |
public void onBindViewHolder(NewTabPageViewHolder holder, int position, List<Object> payloads) { |
+ @ItemViewType |
+ int viewType = getItemViewType(position); |
+ if (viewType == ItemViewType.SNIPPET) { |
+ childSeen(position); |
+ } else if (viewType == ItemViewType.ACTION) { |
+ mSuggestionRanker.rankItem((ActionItem) getChildForPosition(position), this); |
Bernhard Bauer
2017/01/17 17:42:31
Could we have the ActionItem itself call this?
dgn
2017/01/17 18:46:24
Done.
|
+ } |
super.onBindViewHolder(holder, position, payloads); |
- childSeen(position); |
} |
/** |
@@ -261,14 +270,14 @@ public void onBindViewHolder(NewTabPageViewHolder holder, int position, List<Obj |
public void childSeen(int position) { |
Bernhard Bauer
2017/01/17 17:42:31
If this is only called for suggestions now, rename
dgn
2017/01/17 18:46:24
Reverted since actionItem calls its ranker itself.
|
Log.d(TAG, "childSeen: position %d in category %d", position, mCategoryInfo.getCategory()); |
assert getStartingOffsetForChild(mSuggestionsList) == 1; |
- if (getItemViewType(position) == ItemViewType.SNIPPET) { |
- // We assume all non-snippet cards come after all cards of type SNIPPET. |
- int positionAmongSuggestions = position - 1; |
- if (positionAmongSuggestions == 0) { |
- mFirstSuggestionSeen = true; |
- } else if (positionAmongSuggestions > 0) { |
- mSubsequentSuggestionsSeen = true; |
- } |
+ assert getItemViewType(position) == ItemViewType.SNIPPET; |
+ |
+ // We assume all non-snippet cards come after all cards of type SNIPPET. |
+ int positionAmongSuggestions = position - 1; |
+ if (positionAmongSuggestions == 0) { |
+ mFirstSuggestionSeen = true; |
+ } else if (positionAmongSuggestions > 0) { |
+ mSubsequentSuggestionsSeen = true; |
} |
} |
@@ -349,6 +358,7 @@ public void setSuggestions(List<SnippetArticle> suggestions, @CategoryStatusEnum |
mSuggestionsList.addAll(suggestions); |
for (SnippetArticle article : suggestions) { |
+ mSuggestionRanker.rankItem(article); |
if (!article.requiresExactOfflinePage()) { |
updateSnippetOfflineAvailability(article); |
} |