Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapter.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapter.java |
| index ddfd91624d3ffd1eb5bca40314bc2ac01e8d468e..4d605df70ae15a2473906b70f1424df7537a4365 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapter.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/DownloadHistoryAdapter.java |
| @@ -59,30 +59,38 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo |
| private static final int INVALID_INDEX = -1; |
| private final List<DownloadItemWrapper> mDownloadItems = new ArrayList<>(); |
| + private final List<DownloadItemWrapper> mDownloadOffTheRecordItems = new ArrayList<>(); |
| private final List<OfflinePageItemWrapper> mOfflinePageItems = new ArrayList<>(); |
| private final List<DownloadHistoryItemWrapper> mFilteredItems = new ArrayList<>(); |
| + private final boolean mShowOffTheRecord; |
| private int mFilter = DownloadFilter.FILTER_ALL; |
| private DownloadManagerUi mManager; |
| private OfflinePageDownloadBridge mOfflinePageBridge; |
| + DownloadHistoryAdapter(boolean showOffTheRecord) { |
| + mShowOffTheRecord = showOffTheRecord; |
| + } |
| + |
| @Override |
| public void initialize(DownloadManagerUi manager) { |
| manager.addObserver(this); |
| mManager = manager; |
| getDownloadManagerService().addDownloadHistoryAdapter(this); |
| - getDownloadManagerService().getAllDownloads(); |
| + getDownloadManagerService().getAllDownloads(false); |
|
Ian Wen
2016/08/15 23:17:27
Maybe add some comments here? Calling getAllDownlo
gone
2016/08/15 23:29:49
Done.
|
| + if (mShowOffTheRecord) getDownloadManagerService().getAllDownloads(true); |
| initializeOfflinePageBridge(); |
| } |
| /** Called when the user's download history has been gathered. */ |
| - public void onAllDownloadsRetrieved(List<DownloadItem> result) { |
| - mDownloadItems.clear(); |
| - for (DownloadItem item : result) { |
| - mDownloadItems.add(new DownloadItemWrapper(item)); |
| - } |
| + public void onAllDownloadsRetrieved(List<DownloadItem> result, boolean isOffTheRecord) { |
| + if (isOffTheRecord && !mShowOffTheRecord) return; |
| + |
| + List<DownloadItemWrapper> list = getDownloadItemList(isOffTheRecord); |
| + list.clear(); |
| + for (DownloadItem item : result) list.add(new DownloadItemWrapper(item, isOffTheRecord)); |
| filter(DownloadFilter.FILTER_ALL); |
| } |
| @@ -103,6 +111,9 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo |
| for (DownloadHistoryItemWrapper wrapper : mDownloadItems) { |
| totalSize += wrapper.getFileSize(); |
| } |
| + for (DownloadHistoryItemWrapper wrapper : mDownloadOffTheRecordItems) { |
| + totalSize += wrapper.getFileSize(); |
| + } |
| for (DownloadHistoryItemWrapper wrapper : mOfflinePageItems) { |
| totalSize += wrapper.getFileSize(); |
| } |
| @@ -163,14 +174,17 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo |
| /** |
| * Updates the list when new information about a download comes in. |
| */ |
| - public void onDownloadItemUpdated(DownloadItem item) { |
| - int index = findItemIndex(mDownloadItems, item.getId()); |
| + public void onDownloadItemUpdated(DownloadItem item, boolean isOffTheRecord) { |
| + if (isOffTheRecord && !mShowOffTheRecord) return; |
| + |
| + List<DownloadItemWrapper> list = getDownloadItemList(isOffTheRecord); |
| + int index = findItemIndex(list, item.getId()); |
| if (index == INVALID_INDEX) { |
| // Add a new entry. |
| - mDownloadItems.add(new DownloadItemWrapper(item)); |
| + list.add(new DownloadItemWrapper(item, isOffTheRecord)); |
| } else { |
| // Update the old one. |
| - mDownloadItems.set(index, new DownloadItemWrapper(item)); |
| + list.set(index, new DownloadItemWrapper(item, isOffTheRecord)); |
| } |
| filter(mFilter); |
| @@ -178,12 +192,16 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo |
| /** |
| * Removes the DownloadItem with the given ID. |
| - * @param guid ID of the DownloadItem that has been removed. |
| + * @param guid ID of the DownloadItem that has been removed. |
| + * @param isOffTheRecord True if off the record, false otherwise. |
| */ |
| - public void onDownloadItemRemoved(String guid) { |
| - int index = findItemIndex(mDownloadItems, guid); |
| + public void onDownloadItemRemoved(String guid, boolean isOffTheRecord) { |
| + if (isOffTheRecord && !mShowOffTheRecord) return; |
| + |
| + List<DownloadItemWrapper> list = getDownloadItemList(isOffTheRecord); |
| + int index = findItemIndex(list, guid); |
| if (index != INVALID_INDEX) { |
| - DownloadItemWrapper wrapper = mDownloadItems.remove(index); |
| + DownloadItemWrapper wrapper = list.remove(index); |
| if (mManager.getSelectionDelegate().isItemSelected(wrapper)) { |
| mManager.getSelectionDelegate().toggleSelectionForItem(wrapper); |
| } |
| @@ -214,12 +232,17 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo |
| mFilteredItems.clear(); |
| if (filterType == DownloadFilter.FILTER_ALL) { |
| mFilteredItems.addAll(mDownloadItems); |
| + mFilteredItems.addAll(mDownloadOffTheRecordItems); |
| mFilteredItems.addAll(mOfflinePageItems); |
| } else { |
| for (DownloadHistoryItemWrapper item : mDownloadItems) { |
| if (item.getFilterType() == filterType) mFilteredItems.add(item); |
| } |
| + for (DownloadHistoryItemWrapper item : mDownloadOffTheRecordItems) { |
| + if (item.getFilterType() == filterType) mFilteredItems.add(item); |
| + } |
| + |
| if (filterType == DownloadFilter.FILTER_PAGE) { |
| for (DownloadHistoryItemWrapper item : mOfflinePageItems) mFilteredItems.add(item); |
| } |
| @@ -272,6 +295,10 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo |
| }); |
| } |
| + private List<DownloadItemWrapper> getDownloadItemList(boolean isOffTheRecord) { |
| + return isOffTheRecord ? mDownloadOffTheRecordItems : mDownloadItems; |
| + } |
| + |
| /** |
| * Search for an existing entry for the {@link DownloadHistoryItemWrapper} with the given ID. |
| * @param list List to search through. |