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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkItemsAdapter.java

Issue 1688033002: Rename EnhancedBookmarks to Bookmarks, part 1. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments from #2 Created 4 years, 10 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/enhancedbookmarks/EnhancedBookmarkItemsAdapter.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkItemsAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkItemsAdapter.java
deleted file mode 100644
index a5c979cc8def38915aceb134e022d12be1ceb609..0000000000000000000000000000000000000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/enhancedbookmarks/EnhancedBookmarkItemsAdapter.java
+++ /dev/null
@@ -1,385 +0,0 @@
-// Copyright 2015 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.enhancedbookmarks;
-
-import android.content.Context;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import org.chromium.base.annotations.SuppressFBWarnings;
-import org.chromium.base.metrics.RecordHistogram;
-import org.chromium.chrome.R;
-import org.chromium.chrome.browser.bookmark.BookmarksBridge.BookmarkItem;
-import org.chromium.chrome.browser.bookmark.BookmarksBridge.BookmarkModelObserver;
-import org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkPromoHeader.PromoHeaderShowingChangeListener;
-import org.chromium.chrome.browser.offlinepages.OfflinePageBridge;
-import org.chromium.chrome.browser.offlinepages.OfflinePageBridge.OfflinePageModelObserver;
-import org.chromium.chrome.browser.offlinepages.OfflinePageFreeUpSpaceCallback;
-import org.chromium.chrome.browser.offlinepages.OfflinePageFreeUpSpaceDialog;
-import org.chromium.chrome.browser.offlinepages.OfflinePageStorageSpaceHeader;
-import org.chromium.components.bookmarks.BookmarkId;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * BaseAdapter for EnhancedBookmarkItemsContainer. It manages bookmarks to list there.
- */
-class EnhancedBookmarkItemsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements
- EnhancedBookmarkUIObserver, PromoHeaderShowingChangeListener {
- private static final int PROMO_HEADER_VIEW = 0;
- private static final int FOLDER_VIEW = 1;
- private static final int DIVIDER_VIEW = 2;
- private static final int BOOKMARK_VIEW = 3;
- private static final int OFFLINE_PAGES_STORAGE_VIEW = 4;
-
- private EnhancedBookmarkDelegate mDelegate;
- private Context mContext;
- private EnhancedBookmarkPromoHeader mPromoHeaderManager;
- private OfflinePageStorageSpaceHeader mOfflineStorageHeader;
-
- private List<List<? extends Object>> mSections;
- private List<Object> mPromoHeaderSection = new ArrayList<>();
- private List<Object> mOfflineStorageSection = new ArrayList<>();
- private List<Object> mFolderDividerSection = new ArrayList<>();
- private List<BookmarkId> mFolderSection = new ArrayList<>();
- private List<Object> mBookmarkDividerSection = new ArrayList<>();
- private List<BookmarkId> mBookmarkSection = new ArrayList<>();
-
- private BookmarkModelObserver mBookmarkModelObserver = new BookmarkModelObserver() {
- @Override
- public void bookmarkNodeChanged(BookmarkItem node) {
- int position = getPositionForBookmark(node.getId());
- if (position >= 0) notifyItemChanged(position);
- }
-
- @Override
- public void bookmarkNodeRemoved(BookmarkItem parent, int oldIndex, BookmarkItem node,
- boolean isDoingExtensiveChanges) {
- if (node.isFolder()) {
- mDelegate.notifyStateChange(EnhancedBookmarkItemsAdapter.this);
- } else {
- int deletedPosition = getPositionForBookmark(node.getId());
- if (deletedPosition >= 0) {
- removeItem(deletedPosition);
- }
- }
- }
-
- @Override
- public void bookmarkModelChanged() {
- mDelegate.notifyStateChange(EnhancedBookmarkItemsAdapter.this);
- }
- };
-
- private OfflinePageModelObserver mOfflinePageModelObserver;
-
- EnhancedBookmarkItemsAdapter(Context context) {
- mContext = context;
-
- mSections = new ArrayList<>();
- mSections.add(mPromoHeaderSection);
- mSections.add(mOfflineStorageSection);
- mSections.add(mFolderDividerSection);
- mSections.add(mFolderSection);
- mSections.add(mBookmarkDividerSection);
- mSections.add(mBookmarkSection);
- }
-
- BookmarkId getItem(int position) {
- return (BookmarkId) getSection(position).get(toSectionPosition(position));
- }
-
- private int toSectionPosition(int globalPosition) {
- int sectionPosition = globalPosition;
- for (List<?> section : mSections) {
- if (sectionPosition < section.size()) break;
- sectionPosition -= section.size();
- }
- return sectionPosition;
- }
-
- private List<? extends Object> getSection(int position) {
- int i = position;
- for (List<? extends Object> section : mSections) {
- if (i < section.size()) {
- return section;
- }
- i -= section.size();
- }
- return null;
- }
-
- /**
- * @return The position of the given bookmark in adapter. Will return -1 if not found.
- */
- private int getPositionForBookmark(BookmarkId bookmark) {
- assert bookmark != null;
- int position = -1;
- for (int i = 0; i < getItemCount(); i++) {
- if (bookmark.equals(getItem(i))) {
- position = i;
- break;
- }
- }
- return position;
- }
-
- /**
- * Set folders and bookmarks to show.
- * @param folders This can be null if there is no folders to show.
- */
- private void setBookmarks(List<BookmarkId> folders, List<BookmarkId> bookmarks) {
- if (folders == null) folders = new ArrayList<BookmarkId>();
-
- mFolderSection.clear();
- mFolderSection.addAll(folders);
- mBookmarkSection.clear();
- mBookmarkSection.addAll(bookmarks);
-
- updateHeader();
- updateDividerSections();
-
- // TODO(kkimlabs): Animation is disabled due to a performance issue on bookmark undo.
- // http://crbug.com/484174
- notifyDataSetChanged();
- }
-
- private void updateDividerSections() {
- mFolderDividerSection.clear();
- mBookmarkDividerSection.clear();
-
- boolean isHeaderPresent =
- !mPromoHeaderSection.isEmpty() || !mOfflineStorageSection.isEmpty();
-
- if (isHeaderPresent && !mFolderSection.isEmpty()) {
- mFolderDividerSection.add(null);
- }
- if ((isHeaderPresent || !mFolderSection.isEmpty()) && !mBookmarkSection.isEmpty()) {
- mBookmarkDividerSection.add(null);
- }
- }
-
- private void removeItem(int position) {
- List<?> section = getSection(position);
- assert section == mFolderSection || section == mBookmarkSection;
- section.remove(toSectionPosition(position));
- notifyItemRemoved(position);
- }
-
- // RecyclerView.Adapter implementation.
-
- @Override
- public int getItemCount() {
- int count = 0;
- for (List<?> section : mSections) {
- count += section.size();
- }
- return count;
- }
-
- @Override
- public int getItemViewType(int position) {
- List<?> section = getSection(position);
-
- if (section == mPromoHeaderSection) {
- return PROMO_HEADER_VIEW;
- } else if (section == mOfflineStorageSection) {
- return OFFLINE_PAGES_STORAGE_VIEW;
- } else if (section == mFolderDividerSection
- || section == mBookmarkDividerSection) {
- return DIVIDER_VIEW;
- } else if (section == mFolderSection) {
- return FOLDER_VIEW;
- } else if (section == mBookmarkSection) {
- return BOOKMARK_VIEW;
- }
-
- assert false : "Invalid position requested";
- return -1;
- }
-
- @Override
- public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- switch (viewType) {
- case PROMO_HEADER_VIEW:
- return mPromoHeaderManager.createHolder(parent);
- case OFFLINE_PAGES_STORAGE_VIEW:
- return mOfflineStorageHeader.createHolder(parent);
- case DIVIDER_VIEW:
- return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(
- R.layout.eb_divider, parent, false)) {};
- case FOLDER_VIEW:
- EnhancedBookmarkFolderRow folder = (EnhancedBookmarkFolderRow) LayoutInflater
- .from(parent.getContext()).inflate(R.layout.eb_folder_row, parent, false);
- folder.onEnhancedBookmarkDelegateInitialized(mDelegate);
- return new ItemViewHolder(folder);
- case BOOKMARK_VIEW:
- EnhancedBookmarkBookmarkRow item = (EnhancedBookmarkBookmarkRow) LayoutInflater
- .from(parent.getContext()).inflate(R.layout.eb_bookmark_row, parent, false);
- item.onEnhancedBookmarkDelegateInitialized(mDelegate);
- return new ItemViewHolder(item);
- default:
- assert false;
- return null;
- }
- }
-
- @SuppressFBWarnings("BC_UNCONFIRMED_CAST")
- @Override
- public void onBindViewHolder(ViewHolder holder, int position) {
- BookmarkId id = getItem(position);
-
- switch (getItemViewType(position)) {
- case PROMO_HEADER_VIEW:
- case OFFLINE_PAGES_STORAGE_VIEW:
- case DIVIDER_VIEW:
- break;
- case FOLDER_VIEW:
- ((EnhancedBookmarkRow) holder.itemView).setBookmarkId(id);
- break;
- case BOOKMARK_VIEW:
- ((EnhancedBookmarkRow) holder.itemView).setBookmarkId(id);
- break;
- default:
- assert false : "View type not supported!";
- }
- }
-
- // PromoHeaderShowingChangeListener implementation.
-
- @Override
- public void onPromoHeaderShowingChanged(boolean isShowing) {
- if (mDelegate.getCurrentState() != EnhancedBookmarkUIState.STATE_ALL_BOOKMARKS
- && mDelegate.getCurrentState() != EnhancedBookmarkUIState.STATE_FOLDER) {
- return;
- }
-
- updateHeader();
- updateDividerSections();
- notifyDataSetChanged();
- }
-
- // EnhancedBookmarkUIObserver implementations.
-
- @Override
- public void onEnhancedBookmarkDelegateInitialized(EnhancedBookmarkDelegate delegate) {
- mDelegate = delegate;
- mDelegate.addUIObserver(this);
- mDelegate.getModel().addObserver(mBookmarkModelObserver);
- mPromoHeaderManager = new EnhancedBookmarkPromoHeader(mContext, this);
- OfflinePageBridge offlinePageBridge = mDelegate.getModel().getOfflinePageBridge();
- if (offlinePageBridge != null) {
- mOfflinePageModelObserver = new OfflinePageModelObserver() {
- @Override
- public void offlinePageModelChanged() {
- mDelegate.notifyStateChange(EnhancedBookmarkItemsAdapter.this);
- }
-
- @Override
- public void offlinePageDeleted(BookmarkId bookmarkId) {
- if (mDelegate.getCurrentState() == EnhancedBookmarkUIState.STATE_FILTER) {
- int deletedPosition = getPositionForBookmark(bookmarkId);
- if (deletedPosition >= 0) {
- removeItem(deletedPosition);
- }
- }
- }
- };
- offlinePageBridge.addObserver(mOfflinePageModelObserver);
-
- mOfflineStorageHeader = new OfflinePageStorageSpaceHeader(
- mContext, offlinePageBridge, new OfflinePageFreeUpSpaceCallback() {
- @Override
- public void onFreeUpSpaceDone() {
- refreshOfflinePagesFilterView();
- mDelegate.getSnackbarManager().showSnackbar(
- OfflinePageFreeUpSpaceDialog.createStorageClearedSnackbar(
- mContext));
- }
-
- @Override
- public void onFreeUpSpaceCancelled() {
- // No need to refresh, as result outcome should be the same here.
- }
- });
- }
- }
-
- @Override
- public void onDestroy() {
- mDelegate.removeUIObserver(this);
- mDelegate.getModel().removeObserver(mBookmarkModelObserver);
- mPromoHeaderManager.destroy();
-
- OfflinePageBridge offlinePageBridge = mDelegate.getModel().getOfflinePageBridge();
- if (offlinePageBridge != null) {
- offlinePageBridge.removeObserver(mOfflinePageModelObserver);
- mOfflineStorageHeader.destroy();
- }
- }
-
- @Override
- public void onAllBookmarksStateSet() {
- List<BookmarkId> bookmarkIds =
- mDelegate.getModel().getAllBookmarkIDsOrderedByCreationDate();
- RecordHistogram.recordCountHistogram("EnhancedBookmarks.AllBookmarksCount",
- bookmarkIds.size());
- setBookmarks(null, bookmarkIds);
- }
-
- @Override
- public void onFolderStateSet(BookmarkId folder) {
- setBookmarks(mDelegate.getModel().getChildIDs(folder, true, false),
- mDelegate.getModel().getChildIDs(folder, false, true));
- }
-
- @Override
- public void onFilterStateSet(EnhancedBookmarkFilter filter) {
- assert filter == EnhancedBookmarkFilter.OFFLINE_PAGES;
- List<BookmarkId> bookmarkIds = mDelegate.getModel().getBookmarkIDsByFilter(filter);
- RecordHistogram.recordCountHistogram("OfflinePages.OfflinePageCount", bookmarkIds.size());
- setBookmarks(null, mDelegate.getModel().getBookmarkIDsByFilter(filter));
- mDelegate.getModel().getOfflinePageBridge().checkOfflinePageMetadata();
- }
-
- @Override
- public void onSelectionStateChange(List<BookmarkId> selectedBookmarks) {}
-
- private static class ItemViewHolder extends RecyclerView.ViewHolder {
- private ItemViewHolder(View view) {
- super(view);
- }
- }
-
- private void updateHeader() {
- int currentUIState = mDelegate.getCurrentState();
- if (currentUIState == EnhancedBookmarkUIState.STATE_LOADING) return;
-
- mPromoHeaderSection.clear();
- mOfflineStorageSection.clear();
- if (currentUIState == EnhancedBookmarkUIState.STATE_FILTER) {
- if (mOfflineStorageHeader != null && mOfflineStorageHeader.shouldShow()) {
- mOfflineStorageSection.add(null);
- }
- } else {
- assert currentUIState == EnhancedBookmarkUIState.STATE_ALL_BOOKMARKS
- || currentUIState == EnhancedBookmarkUIState.STATE_FOLDER
- : "Unexpected UI state";
- if (mPromoHeaderManager.shouldShow()) {
- mPromoHeaderSection.add(null);
- }
- }
- }
-
- private void refreshOfflinePagesFilterView() {
- if (mDelegate.getCurrentState() != EnhancedBookmarkUIState.STATE_FILTER) return;
- setBookmarks(null,
- mDelegate.getModel().getBookmarkIDsByFilter(EnhancedBookmarkFilter.OFFLINE_PAGES));
- }
-}

Powered by Google App Engine
This is Rietveld 408576698