| Index: chrome/android/java/src/org/chromium/chrome/browser/download/DownloadPage.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadPage.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadPage.java
|
| index adb08deda689f02cfc5d52937959f37580520775..86f5e7cb86f47edbdd38d3c89697be16246ac520 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadPage.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadPage.java
|
| @@ -7,6 +7,10 @@ package org.chromium.chrome.browser.download;
|
| import android.app.Activity;
|
| import android.view.View;
|
|
|
| +import org.chromium.base.ActivityState;
|
| +import org.chromium.base.ApplicationStatus;
|
| +import org.chromium.base.ApplicationStatus.ActivityStateListener;
|
| +import org.chromium.base.ThreadUtils;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.BasicNativePage;
|
| import org.chromium.chrome.browser.UrlConstants;
|
| @@ -17,11 +21,13 @@ import org.chromium.chrome.browser.tab.Tab;
|
| * Native page for managing downloads handled through Chrome.
|
| */
|
| public class DownloadPage extends BasicNativePage {
|
| + private ActivityStateListener mActivityStateListener;
|
| +
|
| private DownloadManagerUi mManager;
|
| private String mTitle;
|
|
|
| /**
|
| - * Create a new instance of the bookmarks page.
|
| + * Create a new instance of the downloads page.
|
| * @param activity The activity to get context and manage fragments.
|
| * @param tab The tab to load urls.
|
| */
|
| @@ -30,10 +36,28 @@ public class DownloadPage extends BasicNativePage {
|
| }
|
|
|
| @Override
|
| - protected void initialize(Activity activity, Tab tab) {
|
| + protected void initialize(Activity activity, final Tab tab) {
|
| + ThreadUtils.assertOnUiThread();
|
| +
|
| mManager = new DownloadManagerUi(activity, tab.isIncognito(), activity.getComponentName());
|
| mManager.setBasicNativePage(this);
|
| mTitle = activity.getString(R.string.download_manager_ui_all_downloads);
|
| +
|
| + // #destroy() unregisters the ActivityStateListener to avoid checking for externally removed
|
| + // downloads after the downloads page is closed. This requires each DownloadPage to have its
|
| + // own ActivityStateListener. If multiple tabs are showing the downloads page, multiple
|
| + // requests to check for externally removed downloads will be issued when the activity is
|
| + // resumed.
|
| + mActivityStateListener = new ActivityStateListener() {
|
| + @Override
|
| + public void onActivityStateChange(Activity activity, int newState) {
|
| + if (newState == ActivityState.RESUMED) {
|
| + DownloadUtils.checkForExternallyRemovedDownloads(
|
| + mManager.getBackendProvider(), tab.isIncognito());
|
| + }
|
| + }
|
| + };
|
| + ApplicationStatus.registerStateListenerForActivity(mActivityStateListener, activity);
|
| }
|
|
|
| @Override
|
| @@ -61,6 +85,7 @@ public class DownloadPage extends BasicNativePage {
|
| public void destroy() {
|
| mManager.onDestroyed();
|
| mManager = null;
|
| + ApplicationStatus.unregisterActivityStateListener(mActivityStateListener);
|
| super.destroy();
|
| }
|
| }
|
|
|