Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCardsManager.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCardsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCardsManager.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9f3d1bce690e311d3d39cf8398a8aae0c6a36bf5 |
| --- /dev/null |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCardsManager.java |
| @@ -0,0 +1,77 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.chrome.browser.ntp; |
| + |
| +import org.chromium.chrome.browser.ntp.snippets.NewTabPageAdapter; |
| +import org.chromium.chrome.browser.ntp.snippets.SnippetsManager; |
| + |
| +import java.util.List; |
| +import java.util.Observable; |
| +import java.util.Observer; |
| + |
| +/** |
| + * A class that handles merging above the fold elements and below the fold cards. |
| + */ |
| +public class NewTabPageCardsManager implements Observer { |
|
newt (away)
2016/03/23 05:29:38
I'm not convinced this class should exist. Could e
May
2016/03/23 19:22:56
Yeah, I think NewTabPageAdapter could be combined
|
| + /** |
| + * Describes the above the fold item |
| + */ |
| + public static final int SNIPPET_ITEM_ABOVE_THE_FOLD = 1; |
| + /** |
| + * Describes the header of a group of similar card snippets |
| + */ |
| + public static final int SNIPPET_ITEM_TYPE_HEADER = 2; |
| + /** |
| + * Describes a single card snippet |
| + */ |
| + public static final int SNIPPET_ITEM_TYPE_SNIPPET = 3; |
| + |
| + /** Base type for anything to add to the new tab page |
|
newt (away)
2016/03/23 05:29:38
fix wrapping, spacing, and indentation in comments
May
2016/03/23 19:22:56
Done.
|
| + */ |
| + public interface NewTabPageListItem { |
| + /** |
| + * Returns the type of this snippet item (SNIPPET_ITEM_TYPE_HEADER or |
| + * SNIPPET_ITEM_TYPE_SNIPPET). This is so we can distinguish between different elements |
| + * that are held in a single RecyclerView holder. |
| + * |
| + * @return the type of this list item. |
| + */ |
| + public int getType(); |
| + } |
| + |
| + /** Represents the data for a header of a group of snippets |
|
newt (away)
2016/03/23 05:29:38
This comment doesn't seem right
May
2016/03/23 19:22:56
Done.
|
| + */ |
| + public static class AboveTheFoldListItem implements NewTabPageListItem { |
| + public AboveTheFoldListItem() {} |
| + |
| + @Override |
| + public int getType() { |
| + return NewTabPageCardsManager.SNIPPET_ITEM_ABOVE_THE_FOLD; |
| + } |
| + } |
| + |
| + private SnippetsManager mSnippetsManager; |
| + private NewTabPageAdapter mDataAdapter; |
| + private NewTabPageLayout mAboveTheFoldContentsView; |
| + |
| + public NewTabPageCardsManager(SnippetsManager manager, NewTabRecyclerView recyclerView, |
|
newt (away)
2016/03/23 05:29:38
javadoc
May
2016/03/23 19:22:56
Done.
|
| + NewTabPageLayout aboveTheFoldView) { |
| + mSnippetsManager = manager; |
| + mAboveTheFoldContentsView = aboveTheFoldView; |
| + mDataAdapter = new NewTabPageAdapter(mSnippetsManager, mAboveTheFoldContentsView); |
| + mDataAdapter.setAboveTheFoldItem(new AboveTheFoldListItem()); |
| + recyclerView.setAdapter(mDataAdapter); |
| + mSnippetsManager.addObserver(this); |
| + } |
| + |
| + @Override |
| + @SuppressWarnings("unchecked") |
| + public void update(Observable observable, Object data) { |
| + if (data instanceof List) { |
|
newt (away)
2016/03/23 05:29:37
And if this instanceof check fails? Seems like a s
May
2016/03/23 19:22:56
Yeah, I was trying to avoid defining yet another n
|
| + List<NewTabPageListItem> snippets = (List<NewTabPageListItem>) data; |
| + mDataAdapter.setSnippetListItems(snippets); |
| + } |
| + } |
| +} |