Index: chrome/browser/android/download/chrome_download_delegate.cc |
diff --git a/chrome/browser/android/download/chrome_download_delegate.cc b/chrome/browser/android/download/chrome_download_delegate.cc |
index 96382979204d6b734040d2aa7980d67d80ed6d4c..6f731f5a107660d75aa4e83750c52de9cfaa4df0 100644 |
--- a/chrome/browser/android/download/chrome_download_delegate.cc |
+++ b/chrome/browser/android/download/chrome_download_delegate.cc |
@@ -9,18 +9,19 @@ |
#include "base/android/jni_android.h" |
#include "base/android/jni_string.h" |
#include "base/android/scoped_java_ref.h" |
+#include "base/bind.h" |
+#include "base/callback.h" |
#include "base/files/file_path.h" |
+#include "base/memory/weak_ptr.h" |
+#include "chrome/browser/android/download/android_download_manager_overwrite_infobar_delegate.h" |
#include "chrome/browser/android/tab_android.h" |
#include "chrome/browser/download/download_extensions.h" |
+#include "chrome/browser/infobars/infobar_service.h" |
#include "chrome/grit/generated_resources.h" |
#include "content/public/browser/android/download_controller_android.h" |
#include "jni/ChromeDownloadDelegate_jni.h" |
#include "ui/base/l10n/l10n_util.h" |
-bool RegisterChromeDownloadDeleagte(JNIEnv* env) { |
- return RegisterNativesImpl(env); |
-} |
- |
// Gets the download warning text for the given file name. |
static jstring GetDownloadWarningText( |
JNIEnv* env, jclass clazz, jstring filename) { |
@@ -45,3 +46,41 @@ static void DangerousDownloadValidated( |
content::DownloadControllerAndroid::Get()->DangerousDownloadValidated( |
tab_android->web_contents(), download_id, accept); |
} |
+ |
+// static |
+void ChromeDownloadDelegate::EnqueueDownloadManagerRequest( |
+ jobject chrome_download_delegate, |
+ bool overwrite, |
+ jobject download_info) { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ |
+ Java_ChromeDownloadDelegate_enqueueDownloadManagerRequestFromNative( |
+ env, chrome_download_delegate, overwrite, download_info); |
+} |
+ |
+// Called when we need to interrupt download and ask users whether to overwrite |
+// an existing file. |
+static void LaunchDownloadOverwriteInfoBar(JNIEnv* env, |
+ jclass clazz, |
+ jobject delegate, |
+ jobject tab, |
+ jobject download_info, |
+ jstring jfile_name, |
+ jstring jdir_name, |
+ jstring jdir_full_path) { |
+ TabAndroid* tab_android = TabAndroid::GetNativeTab(env, tab); |
+ |
+ std::string file_name = |
+ base::android::ConvertJavaStringToUTF8(env, jfile_name); |
+ std::string dir_name = base::android::ConvertJavaStringToUTF8(env, jdir_name); |
+ std::string dir_full_path = |
+ base::android::ConvertJavaStringToUTF8(env, jdir_full_path); |
+ |
+ chrome::android::AndroidDownloadManagerOverwriteInfoBarDelegate::Create( |
+ InfoBarService::FromWebContents(tab_android->web_contents()), file_name, |
+ dir_name, dir_full_path, delegate, download_info); |
+} |
+ |
+bool RegisterChromeDownloadDelegate(JNIEnv* env) { |
+ return RegisterNativesImpl(env); |
+} |