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 ecdd10a659e3279dd04fb5c3dc5b14d39b82e68e..0ef675ae457317f20cc2e9b47ab0707f12dd7bd4 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 |
@@ -45,8 +45,8 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
private final NewTabPageManager mNewTabPageManager; |
private final NewTabPageLayout mNewTabPageLayout; |
private final AboveTheFoldListItem mAboveTheFoldListItem; |
- private final SnippetHeaderListItem mHeaderListItem; |
- private StatusListItem mStatusListItem; |
+ private final SnippetHeaderListItem mHeaderListItem; // TODO(pke): Remove this |
+ private StatusListItem mStatusListItem; // TODO(pke): Remove this? |
private final List<NewTabPageListItem> mNewTabPageListItems; |
private final ItemTouchCallbacks mItemTouchCallbacks; |
private NewTabPageRecyclerView mRecyclerView; |
@@ -116,7 +116,7 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
mNewTabPageManager = manager; |
mNewTabPageLayout = newTabPageLayout; |
mAboveTheFoldListItem = new AboveTheFoldListItem(); |
- mHeaderListItem = new SnippetHeaderListItem(); |
+ mHeaderListItem = new SnippetHeaderListItem(); // TODO(pke): Remove |
mItemTouchCallbacks = new ItemTouchCallbacks(); |
mNewTabPageListItems = new ArrayList<NewTabPageListItem>(); |
mWantsSnippets = true; |
@@ -124,6 +124,7 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
mStatusListItem = StatusListItem.create(snippetsBridge.getCategoryStatus(), this, manager); |
loadSnippets(new ArrayList<SnippetArticle>()); |
+ loadSuggestions(); |
mSnippetsBridge.setObserver(this); |
} |
@@ -150,6 +151,11 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
} |
@Override |
+ public void onNewSuggestions() { |
+ loadSuggestions(); |
+ } |
+ |
+ @Override |
public void onCategoryStatusChanged(int categoryStatus) { |
// Observers should not be registered for that state |
assert categoryStatus != ContentSuggestionsCategoryStatus.CATEGORY_EXPLICITLY_DISABLED; |
@@ -159,6 +165,7 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
// We had many items, implies that the service was previously enabled and just |
// transitioned. to a disabled state. We now clear it. |
loadSnippets(new ArrayList<SnippetArticle>()); |
+ loadSuggestions(); |
} else { |
mNewTabPageListItems.set(FIRST_CARD_POSITION, mStatusListItem); |
notifyItemRangeChanged(FIRST_CARD_POSITION, 2); // Update both the first card and the |
@@ -222,6 +229,39 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
SnippetsBridge.fetchSnippets(); |
} |
+ private void loadSuggestions() { |
+ mNewTabPageListItems.clear(); |
+ mNewTabPageListItems.add(mAboveTheFoldListItem); |
+ |
+ for (int category : mSnippetsBridge.getCategories()) { |
+ int status = mSnippetsBridge.getCategoryStatus(category); |
+ // TODO(pke): Check for proper status, display status card, if appropriate. |
+ // TODO(pke): Provide mSnippetsBridge.getCategoryLocalizedTitle(category): String |
+ |
+ List<SnippetArticle> suggestions = mSnippetsBridge.getSuggestionsForCategory(category); |
+ |
+ // Copy thumbnails over |
+ for (SnippetArticle suggestion : suggestions) { |
+ int existingSnippetIdx = mNewTabPageListItems.indexOf(suggestion); |
+ if (existingSnippetIdx == -1) continue; |
+ |
+ suggestion.setThumbnailBitmap( |
+ ((SnippetArticle) mNewTabPageListItems.get(existingSnippetIdx)) |
+ .getThumbnailBitmap()); |
+ } |
+ |
+ if (!suggestions.isEmpty()) { |
+ mNewTabPageListItems.add(new SnippetHeaderListItem()); // TODO(pke): Title! |
+ mNewTabPageListItems.addAll(suggestions); |
+ // TODO(pke): Add between-section-spacing? |
+ } |
+ } |
+ |
+ mNewTabPageListItems.add(new SpacingListItem()); |
+ |
+ notifyDataSetChanged(); |
+ } |
+ |
private void loadSnippets(List<SnippetArticle> listSnippets) { |
// Copy thumbnails over |
for (SnippetArticle newSnippet : listSnippets) { |
@@ -292,7 +332,7 @@ public class NewTabPageAdapter extends Adapter<NewTabPageViewHolder> implements |
mNewTabPageListItems.add(FIRST_CARD_POSITION, mStatusListItem); |
// We also want to refresh the header and the bottom padding. |
- mHeaderListItem.setVisible(false); |
+ // TODO(pke): Somehow fix this mHeaderListItem.setVisible(false); |
notifyDataSetChanged(); |
} |
} |