Index: chrome/android/java/src/org/chromium/chrome/browser/download/DownloadController.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadController.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadController.java |
index 44a09a0e0bea3c73723d6b21805923ab47e6cf49..d6b2790b0290e94f69e1754a099d5f91167dd74d 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadController.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadController.java |
@@ -13,9 +13,13 @@ import android.view.View; |
import android.widget.TextView; |
import org.chromium.base.ApplicationStatus; |
+import org.chromium.base.ContextUtils; |
import org.chromium.base.annotations.CalledByNative; |
import org.chromium.chrome.R; |
import org.chromium.chrome.browser.ChromeActivity; |
+import org.chromium.chrome.browser.tab.Tab; |
+import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
+import org.chromium.content_public.browser.WebContents; |
import org.chromium.ui.base.WindowAndroid; |
import org.chromium.ui.base.WindowAndroid.PermissionCallback; |
@@ -186,6 +190,37 @@ public class DownloadController { |
builder.create().show(); |
} |
+ /** |
+ * Called when a download is started. |
+ */ |
+ @CalledByNative |
+ private void onDownloadStarted() { |
+ DownloadUtils.showDownloadStartToast(ContextUtils.getApplicationContext()); |
+ } |
+ |
+ /** |
+ * Close a tab if it is blank. Returns true if it is or already closed. |
+ * @param Tab Tab to close. |
+ * @return true iff the tab was (already) closed. |
+ */ |
+ @CalledByNative |
+ static boolean closeTabIfBlank(Tab tab) { |
+ if (tab == null) return true; |
+ WebContents contents = tab.getWebContents(); |
+ boolean isInitialNavigation = contents == null |
+ || contents.getNavigationController().isInitialNavigation(); |
+ if (isInitialNavigation) { |
+ // Tab is created just for download, close it. |
+ TabModelSelector selector = tab.getTabModelSelector(); |
+ if (selector == null) return true; |
+ if (selector.getModel(tab.isIncognito()).getCount() == 1) return false; |
+ boolean closed = selector.closeTab(tab); |
+ assert closed; |
+ return true; |
+ } |
+ return false; |
+ } |
+ |
// native methods |
private native void nativeInit(); |
private native void nativeOnAcquirePermissionResult( |