Index: chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java |
index 898adb5bc116ea4205d2aa6def3d77a88c467153..d80cb2b51103449dae2e4f84bd35d43ae8e0d23c 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java |
@@ -10,9 +10,12 @@ import android.content.Intent; |
import org.chromium.base.metrics.RecordHistogram; |
import org.chromium.chrome.R; |
+import org.chromium.chrome.browser.ChromeTabbedActivity; |
import org.chromium.chrome.browser.IntentHandler; |
import org.chromium.chrome.browser.UrlConstants; |
import org.chromium.chrome.browser.tab.Tab; |
+import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType; |
+import org.chromium.chrome.browser.tabmodel.document.TabDelegate; |
import org.chromium.chrome.browser.util.IntentUtils; |
import org.chromium.content_public.browser.LoadUrlParams; |
import org.chromium.ui.base.DeviceFormFactor; |
@@ -30,13 +33,21 @@ public class DownloadUtils { |
* Displays the download manager UI. Note the UI is different on tablets and on phones. |
*/ |
public static void showDownloadManager(Activity activity, Tab tab) { |
- if (DeviceFormFactor.isTablet(activity)) { |
- tab.loadUrl(new LoadUrlParams(UrlConstants.DOWNLOADS_URL)); |
+ if (DeviceFormFactor.isTablet(activity) && activity instanceof ChromeTabbedActivity) { |
+ // Download Home shows up inside a tab in the browser. |
+ LoadUrlParams params = new LoadUrlParams(UrlConstants.DOWNLOADS_URL); |
+ if (tab == null || !tab.isInitialized()) { |
+ TabDelegate delegate = new TabDelegate(false); |
+ delegate.createNewTab(params, TabLaunchType.FROM_CHROME_UI, null); |
+ } else { |
+ tab.loadUrl(params); |
+ } |
} else { |
+ // Download Home sits on top as a new Activity. |
Intent intent = new Intent(); |
intent.setClass(activity, DownloadActivity.class); |
intent.putExtra(IntentHandler.EXTRA_PARENT_COMPONENT, activity.getComponentName()); |
- intent.putExtra(EXTRA_IS_OFF_THE_RECORD, tab.isIncognito()); |
+ if (tab != null) intent.putExtra(EXTRA_IS_OFF_THE_RECORD, tab.isIncognito()); |
activity.startActivity(intent); |
} |
} |