| Index: chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java
|
| index 6c77d5d550ec9e25e232edb22887bde84121da2d..5ad87ce0f99839ea0df1fc639bdbe31837356f1a 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryAdapter.java
|
| @@ -9,8 +9,8 @@ import android.view.LayoutInflater;
|
| import android.view.View;
|
| import android.view.ViewGroup;
|
|
|
| -import org.chromium.base.Callback;
|
| import org.chromium.chrome.R;
|
| +import org.chromium.chrome.browser.history.BrowsingHistoryBridge.BrowsingHistoryObserver;
|
| import org.chromium.chrome.browser.widget.DateDividedAdapter;
|
| import org.chromium.chrome.browser.widget.selection.SelectableItemViewHolder;
|
| import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
|
| @@ -20,7 +20,7 @@ import java.util.List;
|
| /**
|
| * Bridges the user's browsing history and the UI used to display it.
|
| */
|
| -public class HistoryAdapter extends DateDividedAdapter {
|
| +public class HistoryAdapter extends DateDividedAdapter implements BrowsingHistoryObserver {
|
| private static final String EMPTY_QUERY = "";
|
|
|
| private final SelectionDelegate<HistoryItem> mSelectionDelegate;
|
| @@ -32,7 +32,7 @@ public class HistoryAdapter extends DateDividedAdapter {
|
| public HistoryAdapter(SelectionDelegate<HistoryItem> delegate, HistoryManager manager) {
|
| setHasStableIds(true);
|
| mSelectionDelegate = delegate;
|
| - mBridge = new BrowsingHistoryBridge();
|
| + mBridge = new BrowsingHistoryBridge(this);
|
| mManager = manager;
|
| }
|
|
|
| @@ -48,16 +48,29 @@ public class HistoryAdapter extends DateDividedAdapter {
|
| * Initializes the HistoryAdapter and loads the first set of browsing history items.
|
| */
|
| public void initialize() {
|
| - mBridge.queryHistory(new Callback<List<HistoryItem>>() {
|
| - @Override
|
| - public void onResult(List<HistoryItem> result) {
|
| - // Return early if the results are returned after the activity/native page is
|
| - // destroyed to avoid unnecessary work.
|
| - if (mDestroyed) return;
|
| -
|
| - loadItems(result);
|
| - }
|
| - }, EMPTY_QUERY, 0);
|
| + mBridge.queryHistory(EMPTY_QUERY, 0);
|
| + }
|
| +
|
| + /**
|
| + * Adds the HistoryItem to the list of items being removed and removes it from the adapter. The
|
| + * removal will not be committed until #removeItems() is called.
|
| + * @param item The item to mark for removal.
|
| + */
|
| + public void markItemForRemoval(HistoryItem item) {
|
| + ItemGroup group = getGroupAt(item.getPosition()).first;
|
| + group.removeItem(item);
|
| + // Remove the group if only the date header is left.
|
| + if (group.size() == 1) removeGroup(group);
|
| + notifyDataSetChanged();
|
| +
|
| + mBridge.markItemForRemoval(item);
|
| + }
|
| +
|
| + /**
|
| + * Removes all items that have been marked for removal through #markItemForRemoval().
|
| + */
|
| + public void removeItems() {
|
| + mBridge.removeItems();
|
| }
|
|
|
| @Override
|
| @@ -82,4 +95,20 @@ public class HistoryAdapter extends DateDividedAdapter {
|
| return R.layout.date_view;
|
| }
|
|
|
| + @Override
|
| + public void onQueryHistoryComplete(List<HistoryItem> items) {
|
| + // Return early if the results are returned after the activity/native page is
|
| + // destroyed to avoid unnecessary work.
|
| + if (mDestroyed) return;
|
| +
|
| + loadItems(items);
|
| + }
|
| +
|
| + @Override
|
| + public void onHistoryDeleted() {
|
| + mSelectionDelegate.clearSelection();
|
| + // TODO(twellington): Account for items that have been paged in due to infinite scroll.
|
| + // This currently removes all items and re-issues a query.
|
| + initialize();
|
| + }
|
| }
|
|
|