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