| 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..fd711bb7701ca2242cd0178de9fb77776d20ab98 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,11 @@ 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.base.annotations.SuppressFBWarnings;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.BasicNativePage;
|
| import org.chromium.chrome.browser.UrlConstants;
|
| @@ -17,11 +22,13 @@ import org.chromium.chrome.browser.tab.Tab;
|
| * Native page for managing downloads handled through Chrome.
|
| */
|
| public class DownloadPage extends BasicNativePage {
|
| + private static ActivityStateListener sActivityStateListener;
|
| +
|
| 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 +37,28 @@ public class DownloadPage extends BasicNativePage {
|
| }
|
|
|
| @Override
|
| - protected void initialize(Activity activity, Tab tab) {
|
| + @SuppressFBWarnings("LI_LAZY_INIT_UPDATE_STATIC") // Not called from multiple threads.
|
| + 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);
|
| +
|
| + // Only register one activity state listener to prevent issuing multiple calls to check for
|
| + // externally removed downloads if multiple tabs are showing the downloads page.
|
| + if (sActivityStateListener == null) {
|
| + sActivityStateListener = new ActivityStateListener() {
|
| + @Override
|
| + public void onActivityStateChange(Activity activity, int newState) {
|
| + if (newState == ActivityState.RESUMED) {
|
| + DownloadUtils.checkForExternallyRemovedDownloads(
|
| + activity.getApplicationContext(), tab.isIncognito());
|
| + }
|
| + }
|
| + };
|
| + ApplicationStatus.registerStateListenerForActivity(sActivityStateListener, activity);
|
| + }
|
| }
|
|
|
| @Override
|
|
|