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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java

Issue 2230473002: Refactor and extend SnippetsBridge for multi-section support (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@categoryinfo
Patch Set: Rename SnippetsObserver to ContentSuggestionsSourceObserver Created 4 years, 4 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/NewTabPageAdapter.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java
index 61285b3c01e8f6e5a16645bd3e795654449869e4..6a3e0c28def4ed0e6da82a3a7d532b54b4f02e00 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java
@@ -19,15 +19,13 @@ import org.chromium.chrome.browser.ntp.NewTabPageView.NewTabPageManager;
import org.chromium.chrome.browser.ntp.UiConfig;
import org.chromium.chrome.browser.ntp.snippets.CategoryStatus;
import org.chromium.chrome.browser.ntp.snippets.CategoryStatus.CategoryStatusEnum;
-import org.chromium.chrome.browser.ntp.snippets.KnownCategories;
-import org.chromium.chrome.browser.ntp.snippets.KnownCategories.KnownCategoriesEnum;
+import org.chromium.chrome.browser.ntp.snippets.ContentSuggestionsSource;
+import org.chromium.chrome.browser.ntp.snippets.ContentSuggestionsSource.ContentSuggestionsSourceObserver;
import org.chromium.chrome.browser.ntp.snippets.SnippetArticleListItem;
import org.chromium.chrome.browser.ntp.snippets.SnippetArticleViewHolder;
import org.chromium.chrome.browser.ntp.snippets.SnippetHeaderListItem;
import org.chromium.chrome.browser.ntp.snippets.SnippetHeaderViewHolder;
import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge;
-import org.chromium.chrome.browser.ntp.snippets.SnippetsSource;
-import org.chromium.chrome.browser.ntp.snippets.SnippetsSource.SnippetsObserver;
import java.util.ArrayList;
import java.util.Collections;
@@ -41,12 +39,13 @@ import java.util.TreeMap;
* the above-the-fold view (containing the logo, search box, and most visited tiles) and subsequent
* elements will be the cards shown to the user
*/
-public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements SnippetsObserver {
+public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder>
+ implements ContentSuggestionsSourceObserver {
private static final String TAG = "Ntp";
private final NewTabPageManager mNewTabPageManager;
private final NewTabPageLayout mNewTabPageLayout;
- private SnippetsSource mSnippetsSource;
+ private ContentSuggestionsSource mSnippetsSource;
Michael van Ouwerkerk 2016/08/09 13:52:20 Please also update the variable name to e.g. mSugg
Philipp Keck 2016/08/09 16:15:07 Done.
private final UiConfig mUiConfig;
private final ItemTouchCallbacks mItemTouchCallbacks = new ItemTouchCallbacks();
private NewTabPageRecyclerView mRecyclerView;
@@ -120,17 +119,16 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements
* @param uiConfig the NTP UI configuration, to be passed to created views.
*/
public NewTabPageAdapter(NewTabPageManager manager, NewTabPageLayout newTabPageLayout,
- SnippetsSource snippetsSource, UiConfig uiConfig) {
+ ContentSuggestionsSource snippetsSource, UiConfig uiConfig) {
Michael van Ouwerkerk 2016/08/09 13:52:20 Also update the param name here and in the docs ab
Philipp Keck 2016/08/09 16:15:06 Done.
mNewTabPageManager = manager;
mNewTabPageLayout = newTabPageLayout;
mSnippetsSource = snippetsSource;
mUiConfig = uiConfig;
- // TODO(mvanouwerkerk): Do not hard code ARTICLES. Maybe do not initialize an empty
- // section in the constructor.
- setSuggestions(KnownCategories.ARTICLES,
- Collections.<SnippetArticleListItem>emptyList(),
- snippetsSource.getCategoryStatus(KnownCategories.ARTICLES));
+ for (int category : mSnippetsSource.getCategories()) {
Michael van Ouwerkerk 2016/08/09 13:52:20 If there are no categories, this means the above t
Philipp Keck 2016/08/09 16:15:06 Moved code from setSuggestions to a new method "up
+ setSuggestions(category, snippetsSource.getSuggestionsForCategory(category),
+ snippetsSource.getCategoryStatus(category));
+ }
snippetsSource.setObserver(this);
}
@@ -140,8 +138,7 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements
}
@Override
- public void onSuggestionsReceived(
- @KnownCategoriesEnum int category, List<SnippetArticleListItem> suggestions) {
+ public void onNewSuggestions(int category) {
// We never want to refresh the suggestions if we already have some content.
if (mSections.containsKey(category) && mSections.get(category).hasSuggestions()) return;
@@ -152,6 +149,9 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements
return;
}
+ List<SnippetArticleListItem> suggestions =
+ mSnippetsSource.getSuggestionsForCategory(category);
+
Log.d(TAG, "Received %d new suggestions for category %d.", suggestions.size(), category);
// At first, there might be no suggestions available, we wait until they have been fetched.
@@ -163,8 +163,7 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements
}
@Override
- public void onCategoryStatusChanged(
- @KnownCategoriesEnum int category, @CategoryStatusEnum int status) {
+ public void onCategoryStatusChanged(int category, @CategoryStatusEnum int status) {
// Observers should not be registered for this state.
assert status != CategoryStatus.ALL_SUGGESTIONS_EXPLICITLY_DISABLED;
@@ -257,14 +256,15 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements
SnippetsBridge.fetchSnippets(/*forceRequest=*/true);
}
- private void setSuggestions(@KnownCategoriesEnum int category,
- List<SnippetArticleListItem> suggestions, @CategoryStatusEnum int status) {
+ private void setSuggestions(int category, List<SnippetArticleListItem> suggestions,
+ @CategoryStatusEnum int status) {
mGroups.clear();
mGroups.add(mAboveTheFold);
if (!mSections.containsKey(category)) {
- mSections.put(category,
- new SuggestionsSection(suggestions, status, this));
+ SuggestionsCategoryInfo info = mSnippetsSource.getCategoryInfo(category);
+ if (info == null) return;
Bernhard Bauer 2016/08/09 13:10:41 Similar to https://codereview.chromium.org/2207493
Michael van Ouwerkerk 2016/08/09 13:52:20 Returning here is not appropriate, considering wha
Philipp Keck 2016/08/09 14:02:53 True. I removed the check. If it should ever be nu
Bernhard Bauer 2016/08/09 14:30:11 Exactly. Thanks!
Philipp Keck 2016/08/09 16:15:07 Acknowledged.
+ mSections.put(category, new SuggestionsSection(suggestions, status, info, this));
} else {
mSections.get(category).setSuggestions(suggestions, status, this);
}
@@ -297,7 +297,7 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements
int position = itemViewHolder.getAdapterPosition();
SnippetArticleListItem suggestion = (SnippetArticleListItem) getItems().get(position);
- mSnippetsSource.getSnippedVisited(suggestion, new Callback<Boolean>() {
+ mSnippetsSource.getSuggestionVisited(suggestion, new Callback<Boolean>() {
@Override
public void onResult(Boolean result) {
NewTabPageUma.recordSnippetAction(result
@@ -306,7 +306,7 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements
}
});
- mSnippetsSource.discardSnippet(suggestion);
+ mSnippetsSource.dismissSuggestion(suggestion);
SuggestionsSection section = (SuggestionsSection) getGroup(position);
section.dismissSuggestion(suggestion);

Powered by Google App Engine
This is Rietveld 408576698