Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1730)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/ntp/cards/NewTabPageAdapter.java

Issue 2191593002: 📰 Add a spinner to indicate content is loading (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix unit tests, add an extra one Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698