Index: chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SectionList.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SectionList.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SectionList.java |
index 2143c590c1b5ea768d29bf718f04b28ba84f0b89..5ac8614dbf72c08f4eb1c7afb0d7a4ecc7acd6d5 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SectionList.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/SectionList.java |
@@ -5,6 +5,7 @@ |
package org.chromium.chrome.browser.ntp.cards; |
import org.chromium.base.Log; |
+import org.chromium.base.VisibleForTesting; |
import org.chromium.chrome.browser.ntp.NewTabPageView.NewTabPageManager; |
import org.chromium.chrome.browser.ntp.snippets.CategoryInt; |
import org.chromium.chrome.browser.ntp.snippets.CategoryStatus; |
@@ -15,7 +16,6 @@ |
import org.chromium.chrome.browser.ntp.snippets.SuggestionsSource; |
import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; |
-import java.util.ArrayList; |
import java.util.LinkedHashMap; |
import java.util.List; |
import java.util.Map; |
@@ -29,37 +29,23 @@ |
/** Maps suggestion categories to sections, with stable iteration ordering. */ |
private final Map<Integer, SuggestionsSection> mSections = new LinkedHashMap<>(); |
- private final List<TreeNode> mChildren = new ArrayList<>(); |
private final NewTabPageManager mNewTabPageManager; |
private final OfflinePageBridge mOfflinePageBridge; |
- public SectionList(NodeParent parent, NewTabPageManager newTabPageManager, |
- OfflinePageBridge offlinePageBridge) { |
- super(parent); |
+ public SectionList(NewTabPageManager newTabPageManager, OfflinePageBridge offlinePageBridge) { |
mNewTabPageManager = newTabPageManager; |
mNewTabPageManager.getSuggestionsSource().setObserver(this); |
mOfflinePageBridge = offlinePageBridge; |
- } |
- |
- @Override |
- public void init() { |
- super.init(); |
resetSections(/* alwaysAllowEmptySections = */ false); |
} |
- @Override |
- protected List<TreeNode> getChildren() { |
- return mChildren; |
- } |
- |
/** |
* Resets the sections, reloading the whole new tab page content. |
* @param alwaysAllowEmptySections Whether sections are always allowed to be displayed when |
* they are empty, even when they are normally not. |
*/ |
public void resetSections(boolean alwaysAllowEmptySections) { |
- mSections.clear(); |
- mChildren.clear(); |
+ removeAllSections(); |
SuggestionsSource suggestionsSource = mNewTabPageManager.getSuggestionsSource(); |
int[] categories = suggestionsSource.getCategories(); |
@@ -105,10 +91,9 @@ private int resetSection(@CategoryInt int category, @CategoryStatusEnum int cate |
// Create the section if needed. |
if (section == null) { |
- section = new SuggestionsSection(this, mNewTabPageManager, mOfflinePageBridge, info); |
+ section = new SuggestionsSection(mNewTabPageManager, mOfflinePageBridge, info); |
mSections.put(category, section); |
- mChildren.add(section); |
- didAddChild(section); |
+ addChild(section); |
} |
// Add the new suggestions. |
@@ -229,10 +214,15 @@ public void dismissSection(SuggestionsSection section) { |
removeSection(section); |
} |
- private void removeSection(SuggestionsSection section) { |
+ @VisibleForTesting |
+ void removeSection(SuggestionsSection section) { |
mSections.remove(section.getCategory()); |
- willRemoveChild(section); |
- mChildren.remove(section); |
+ removeChild(section); |
+ } |
+ |
+ private void removeAllSections() { |
+ mSections.clear(); |
+ removeChildren(); |
} |
/** |