| 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 fb264595acc6ec8342179279664371f2f9b3d9ab..5a99e44f3387b8a15b40da38fc78cab5a86bae88 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
|
| @@ -31,6 +31,7 @@ import org.chromium.chrome.browser.offlinepages.downloads.OfflinePageDownloadIte
|
| import org.chromium.chrome.browser.profiles.Profile;
|
| import org.chromium.chrome.browser.util.UrlUtilities;
|
| import org.chromium.chrome.browser.widget.DateDividedAdapter;
|
| +import org.chromium.chrome.browser.widget.selection.SelectionDelegate;
|
|
|
| import java.util.ArrayList;
|
| import java.util.List;
|
| @@ -70,7 +71,7 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| private final boolean mShowOffTheRecord;
|
|
|
| private int mFilter = DownloadFilter.FILTER_ALL;
|
| - private DownloadManagerUi mManager;
|
| + private SelectionDelegate<DownloadHistoryItemWrapper> mSelectionDelegate;
|
| private OfflinePageDownloadBridge mOfflinePageBridge;
|
| private int mFilenameViewTextColor;
|
|
|
| @@ -81,14 +82,9 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
|
|
| @Override
|
| public void initialize(DownloadManagerUi manager) {
|
| - manager.addObserver(this);
|
| - mManager = manager;
|
| -
|
| - // Get all regular and (if necessary) off the record downloads.
|
| - getDownloadManagerService().addDownloadHistoryAdapter(this);
|
| - getDownloadManagerService().getAllDownloads(false);
|
| - if (mShowOffTheRecord) getDownloadManagerService().getAllDownloads(true);
|
| -
|
| + if (manager != null) manager.addObserver(this);
|
| + mSelectionDelegate = getSelectionDelegate(manager);
|
| + initializeDownloadBridge();
|
| initializeOfflinePageBridge();
|
| }
|
|
|
| @@ -138,7 +134,7 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| public ViewHolder createViewHolder(ViewGroup parent) {
|
| View v = LayoutInflater.from(parent.getContext()).inflate(
|
| R.layout.download_item_view, parent, false);
|
| - ((DownloadItemView) v).setSelectionDelegate(mManager.getSelectionDelegate());
|
| + ((DownloadItemView) v).setSelectionDelegate(mSelectionDelegate);
|
| return new ItemViewHolder(v);
|
| }
|
|
|
| @@ -218,8 +214,8 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| int index = findItemIndex(list, guid);
|
| if (index != INVALID_INDEX) {
|
| DownloadItemWrapper wrapper = list.remove(index);
|
| - if (mManager.getSelectionDelegate().isItemSelected(wrapper)) {
|
| - mManager.getSelectionDelegate().toggleSelectionForItem(wrapper);
|
| + if (mSelectionDelegate != null && mSelectionDelegate.isItemSelected(wrapper)) {
|
| + mSelectionDelegate.toggleSelectionForItem(wrapper);
|
| }
|
| filter(mFilter);
|
| }
|
| @@ -238,8 +234,12 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| mOfflinePageBridge.destroy();
|
| mOfflinePageBridge = null;
|
| }
|
| + }
|
|
|
| - mManager = null;
|
| + /** Returns the SelectionDelegate to use for each ViewHolder. */
|
| + protected SelectionDelegate<DownloadHistoryItemWrapper> getSelectionDelegate(
|
| + DownloadManagerUi manager) {
|
| + return manager == null ? null : manager.getSelectionDelegate();
|
| }
|
|
|
| /** Filters the list of downloads to show only files of a specific type. */
|
| @@ -267,7 +267,14 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| loadItems(mFilteredItems);
|
| }
|
|
|
| - private void initializeOfflinePageBridge() {
|
| + protected void initializeDownloadBridge() {
|
| + // Get all regular and (if necessary) off the record downloads.
|
| + getDownloadManagerService().addDownloadHistoryAdapter(this);
|
| + getDownloadManagerService().getAllDownloads(false);
|
| + if (mShowOffTheRecord) getDownloadManagerService().getAllDownloads(true);
|
| + }
|
| +
|
| + protected void initializeOfflinePageBridge() {
|
| mOfflinePageBridge = new OfflinePageDownloadBridge(
|
| Profile.getLastUsedProfile().getOriginalProfile());
|
|
|
| @@ -289,8 +296,8 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| int index = findItemIndex(mOfflinePageItems, guid);
|
| if (index != INVALID_INDEX) {
|
| DownloadHistoryItemWrapper wrapper = mOfflinePageItems.remove(index);
|
| - if (mManager.getSelectionDelegate().isItemSelected(wrapper)) {
|
| - mManager.getSelectionDelegate().toggleSelectionForItem(wrapper);
|
| + if (mSelectionDelegate.isItemSelected(wrapper)) {
|
| + mSelectionDelegate.toggleSelectionForItem(wrapper);
|
| }
|
| updateFilter();
|
| }
|
| @@ -332,11 +339,6 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| return INVALID_INDEX;
|
| }
|
|
|
| - private static DownloadManagerService getDownloadManagerService() {
|
| - return DownloadManagerService.getDownloadManagerService(
|
| - ContextUtils.getApplicationContext());
|
| - }
|
| -
|
| private void setItemViewStyle(ItemViewHolder holder, DownloadHistoryItemWrapper item) {
|
| if (mFilenameViewTextColor == 0) {
|
| // The color is not explicitly set in the XML. Programmatically retrieve the original
|
| @@ -367,4 +369,8 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| }
|
| }
|
|
|
| + private static DownloadManagerService getDownloadManagerService() {
|
| + return DownloadManagerService.getDownloadManagerService(
|
| + ContextUtils.getApplicationContext());
|
| + }
|
| }
|
|
|