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 17904cab8b5ac4bf57bd1ae0a2d6b707bd9cc58f..2f8c5ffa9b184b413bd6f1055c8dde92d1072326 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 |
@@ -43,6 +43,7 @@ |
private final AboveTheFoldListItem mAboveTheFold; |
private final SnippetHeaderListItem mHeader; |
private final UiConfig mUiConfig; |
+ private final ProgressListItem mProgressIndicator; |
private StatusListItem mStatusCard; |
private final SpacingListItem mBottomSpacer; |
private final List<NewTabPageListItem> mItems; |
@@ -115,14 +116,14 @@ public NewTabPageAdapter(NewTabPageManager manager, NewTabPageLayout newTabPageL |
mNewTabPageLayout = newTabPageLayout; |
mAboveTheFold = new AboveTheFoldListItem(); |
mHeader = new SnippetHeaderListItem(); |
+ mProgressIndicator = new ProgressListItem(); |
mBottomSpacer = new SpacingListItem(); |
mItemTouchCallbacks = new ItemTouchCallbacks(); |
mItems = new ArrayList<>(); |
- mProviderStatus = CategoryStatus.INITIALIZING; |
+ mProviderStatus = snippetsSource.getCategoryStatus(); |
mSnippetsSource = snippetsSource; |
mUiConfig = uiConfig; |
- mStatusCard = StatusListItem.create(snippetsSource.getCategoryStatus(), this); |
- |
+ mStatusCard = StatusListItem.create(mProviderStatus, this); |
loadSnippets(new ArrayList<SnippetArticleListItem>()); |
snippetsSource.setObserver(this); |
} |
@@ -158,6 +159,7 @@ public void onCategoryStatusChanged(int categoryStatus) { |
mProviderStatus = categoryStatus; |
mStatusCard = StatusListItem.create(mProviderStatus, this); |
+ mProgressIndicator.setVisible(SnippetsBridge.isCategoryLoading(mProviderStatus)); |
// We had suggestions but we just got notified about the provider being enabled. Nothing to |
// do then. |
@@ -171,8 +173,8 @@ public void onCategoryStatusChanged(int categoryStatus) { |
// If there are no suggestions there is an old status card that must be replaced. |
int firstCardPosition = getFirstCardPosition(); |
mItems.set(firstCardPosition, mStatusCard); |
- // Update both the status card and the spacer after it. |
- notifyItemRangeChanged(firstCardPosition, 2); |
+ // Update both the status card, the progress indicator and the spacer after it. |
+ notifyItemRangeChanged(firstCardPosition, 3); |
} |
} |
@@ -207,6 +209,10 @@ public NewTabPageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { |
return new StatusListItem.ViewHolder(mRecyclerView, mUiConfig); |
} |
+ if (viewType == NewTabPageListItem.VIEW_TYPE_PROGRESS) { |
+ return new ProgressViewHolder(mRecyclerView); |
+ } |
+ |
return null; |
} |
@@ -268,6 +274,7 @@ private void loadSnippets(List<SnippetArticleListItem> snippets) { |
mItems.addAll(snippets); |
} else { |
mItems.add(mStatusCard); |
+ mItems.add(mProgressIndicator); |
} |
mItems.add(mBottomSpacer); |
@@ -314,6 +321,7 @@ public void onResult(Boolean result) { |
private void addStatusCardIfNecessary() { |
if (!hasSuggestions() && !mItems.contains(mStatusCard)) { |
mItems.add(getFirstCardPosition(), mStatusCard); |
+ mItems.add(getFirstCardPosition() + 1, mProgressIndicator); |
// We also want to refresh the header and the bottom padding. |
mHeader.setVisible(false); |