| 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();
|
| }
|
| }
|
|
|