| 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 a0300ac5fbdd2eb4bbf910fdb3d1c050d321124b..9a95c780a2837fbf2f80d43dd2bff09b02429175 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
|
| @@ -19,16 +19,15 @@ import android.widget.ImageView;
|
| import android.widget.TextView;
|
|
|
| import org.chromium.base.ApiCompatibilityUtils;
|
| -import org.chromium.base.ContextUtils;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.download.DownloadItem;
|
| -import org.chromium.chrome.browser.download.DownloadManagerService;
|
| +import org.chromium.chrome.browser.download.ui.BackendProvider.DownloadDelegate;
|
| +import org.chromium.chrome.browser.download.ui.BackendProvider.OfflinePageDelegate;
|
| import org.chromium.chrome.browser.download.ui.DownloadHistoryItemWrapper.DownloadItemWrapper;
|
| import org.chromium.chrome.browser.download.ui.DownloadHistoryItemWrapper.OfflinePageItemWrapper;
|
| import org.chromium.chrome.browser.download.ui.DownloadManagerUi.DownloadUiObserver;
|
| import org.chromium.chrome.browser.offlinepages.downloads.OfflinePageDownloadBridge;
|
| import org.chromium.chrome.browser.offlinepages.downloads.OfflinePageDownloadItem;
|
| -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;
|
| @@ -70,9 +69,9 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| private final ComponentName mParentComponent;
|
| private final boolean mShowOffTheRecord;
|
|
|
| + private BackendProvider mBackendProvider;
|
| + private OfflinePageDownloadBridge.Observer mOfflinePageObserver;
|
| private int mFilter = DownloadFilter.FILTER_ALL;
|
| - private SelectionDelegate<DownloadHistoryItemWrapper> mSelectionDelegate;
|
| - private OfflinePageDownloadBridge mOfflinePageBridge;
|
| private int mFilenameViewTextColor;
|
|
|
| DownloadHistoryAdapter(boolean showOffTheRecord, ComponentName parentComponent) {
|
| @@ -81,11 +80,15 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| setHasStableIds(true);
|
| }
|
|
|
| - @Override
|
| - public void initialize(DownloadManagerUi manager) {
|
| - if (manager != null) manager.addObserver(this);
|
| - mSelectionDelegate = getSelectionDelegate(manager);
|
| - initializeDownloadBridge();
|
| + public void initialize(BackendProvider provider) {
|
| + mBackendProvider = provider;
|
| +
|
| + // Get all regular and (if necessary) off the record downloads.
|
| + DownloadDelegate downloadManager = getDownloadDelegate();
|
| + downloadManager.addDownloadHistoryAdapter(this);
|
| + downloadManager.getAllDownloads(false);
|
| + if (mShowOffTheRecord) downloadManager.getAllDownloads(true);
|
| +
|
| initializeOfflinePageBridge();
|
| }
|
|
|
| @@ -103,8 +106,7 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| private void onAllOfflinePagesRetrieved(List<OfflinePageDownloadItem> result) {
|
| mOfflinePageItems.clear();
|
| for (OfflinePageDownloadItem item : result) {
|
| - mOfflinePageItems.add(
|
| - new OfflinePageItemWrapper(item, mOfflinePageBridge, mParentComponent));
|
| + mOfflinePageItems.add(createOfflinePageItemWrapper(item));
|
| }
|
|
|
| // TODO(ianwen): Implement a loading screen to prevent filter-changing wonkiness.
|
| @@ -135,7 +137,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(mSelectionDelegate);
|
| + ((DownloadItemView) v).setSelectionDelegate(getSelectionDelegate());
|
| return new ItemViewHolder(v);
|
| }
|
|
|
| @@ -219,19 +221,21 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| }
|
|
|
| @Override
|
| - public void onManagerDestroyed(DownloadManagerUi manager) {
|
| - getDownloadManagerService().removeDownloadHistoryAdapter(this);
|
| + public void onManagerDestroyed() {
|
| + getDownloadDelegate().removeDownloadHistoryAdapter(this);
|
| + getOfflinePageBridge().removeObserver(mOfflinePageObserver);
|
| + }
|
|
|
| - if (mOfflinePageBridge != null) {
|
| - mOfflinePageBridge.destroy();
|
| - mOfflinePageBridge = null;
|
| - }
|
| + private DownloadDelegate getDownloadDelegate() {
|
| + return mBackendProvider.getDownloadDelegate();
|
| }
|
|
|
| - /** Returns the SelectionDelegate to use for each ViewHolder. */
|
| - protected SelectionDelegate<DownloadHistoryItemWrapper> getSelectionDelegate(
|
| - DownloadManagerUi manager) {
|
| - return manager == null ? null : manager.getSelectionDelegate();
|
| + private OfflinePageDelegate getOfflinePageBridge() {
|
| + return mBackendProvider.getOfflinePageBridge();
|
| + }
|
| +
|
| + private SelectionDelegate<DownloadHistoryItemWrapper> getSelectionDelegate() {
|
| + return mBackendProvider.getSelectionDelegate();
|
| }
|
|
|
| /** Filters the list of downloads to show only files of a specific type. */
|
| @@ -259,27 +263,16 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| loadItems(mFilteredItems);
|
| }
|
|
|
| - 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());
|
| -
|
| - mOfflinePageBridge.addObserver(new OfflinePageDownloadBridge.Observer() {
|
| + private void initializeOfflinePageBridge() {
|
| + mOfflinePageObserver = new OfflinePageDownloadBridge.Observer() {
|
| @Override
|
| public void onItemsLoaded() {
|
| - onAllOfflinePagesRetrieved(mOfflinePageBridge.getAllItems());
|
| + onAllOfflinePagesRetrieved(getOfflinePageBridge().getAllItems());
|
| }
|
|
|
| @Override
|
| public void onItemAdded(OfflinePageDownloadItem item) {
|
| - mOfflinePageItems.add(
|
| - new OfflinePageItemWrapper(item, mOfflinePageBridge, mParentComponent));
|
| + mOfflinePageItems.add(createOfflinePageItemWrapper(item));
|
| updateFilter();
|
| }
|
|
|
| @@ -292,8 +285,7 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| public void onItemUpdated(OfflinePageDownloadItem item) {
|
| int index = findItemIndex(mOfflinePageItems, item.getGuid());
|
| if (index != INVALID_INDEX) {
|
| - mOfflinePageItems.set(index,
|
| - new OfflinePageItemWrapper(item, mOfflinePageBridge, mParentComponent));
|
| + mOfflinePageItems.set(index, createOfflinePageItemWrapper(item));
|
| updateFilter();
|
| }
|
| }
|
| @@ -304,7 +296,8 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| filter(mFilter);
|
| }
|
| }
|
| - });
|
| + };
|
| + getOfflinePageBridge().addObserver(mOfflinePageObserver);
|
| }
|
|
|
| private List<DownloadItemWrapper> getDownloadItemList(boolean isOffTheRecord) {
|
| @@ -365,16 +358,15 @@ public class DownloadHistoryAdapter extends DateDividedAdapter implements Downlo
|
| int index = findItemIndex(list, guid);
|
| if (index != INVALID_INDEX) {
|
| T wrapper = list.remove(index);
|
| - if (mSelectionDelegate != null && mSelectionDelegate.isItemSelected(wrapper)) {
|
| - mSelectionDelegate.toggleSelectionForItem(wrapper);
|
| + if (getSelectionDelegate().isItemSelected(wrapper)) {
|
| + getSelectionDelegate().toggleSelectionForItem(wrapper);
|
| }
|
| return true;
|
| }
|
| return false;
|
| }
|
|
|
| - private static DownloadManagerService getDownloadManagerService() {
|
| - return DownloadManagerService.getDownloadManagerService(
|
| - ContextUtils.getApplicationContext());
|
| + private OfflinePageItemWrapper createOfflinePageItemWrapper(OfflinePageDownloadItem item) {
|
| + return new OfflinePageItemWrapper(item, getOfflinePageBridge(), mParentComponent);
|
| }
|
| }
|
|
|