| 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 00943c8802eb02a1e2c41020569d425e5a73698b..fb1633afed6b874b197b6014216804f34b4cd99f 100644
|
| --- a/chrome/browser/android/download/chrome_download_delegate.cc
|
| +++ b/chrome/browser/android/download/chrome_download_delegate.cc
|
| @@ -17,17 +17,18 @@
|
| #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/download/download_controller_android.h"
|
| #include "chrome/browser/android/tab_android.h"
|
| #include "chrome/browser/infobars/infobar_service.h"
|
| #include "chrome/browser/permissions/permission_update_infobar_delegate_android.h"
|
| #include "chrome/common/safe_browsing/file_type_policies.h"
|
| #include "chrome/grit/chromium_strings.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"
|
|
|
| -using content::DownloadControllerAndroid;
|
| +using base::android::ConvertUTF8ToJavaString;
|
| +using base::android::ScopedJavaLocalRef;
|
|
|
| // Gets the download warning text for the given file name.
|
| static ScopedJavaLocalRef<jstring> GetDownloadWarningText(
|
| @@ -128,6 +129,80 @@ static void LaunchPermissionUpdateInfoBar(
|
| *cb);
|
| }
|
|
|
| +ChromeDownloadDelegate::ChromeDownloadDelegate(
|
| + content::WebContents* web_contents) {}
|
| +
|
| +ChromeDownloadDelegate::~ChromeDownloadDelegate() {}
|
| +
|
| +void ChromeDownloadDelegate::SetDelegate(JNIEnv* env, jobject jobj) {
|
| + weak_java_ref_ = JavaObjectWeakGlobalRef(env, jobj);
|
| +}
|
| +
|
| +void ChromeDownloadDelegate::RequestHTTPGetDownload(
|
| + const std::string& url,
|
| + const std::string& user_agent,
|
| + const std::string& content_disposition,
|
| + const std::string& mime_type,
|
| + const std::string& cookie,
|
| + const std::string& referer,
|
| + const base::string16& file_name,
|
| + int64_t content_length,
|
| + bool has_user_gesture,
|
| + bool must_download) {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + ScopedJavaLocalRef<jstring> jurl =
|
| + ConvertUTF8ToJavaString(env, url);
|
| + ScopedJavaLocalRef<jstring> juser_agent =
|
| + ConvertUTF8ToJavaString(env, user_agent);
|
| + ScopedJavaLocalRef<jstring> jcontent_disposition =
|
| + ConvertUTF8ToJavaString(env, content_disposition);
|
| + ScopedJavaLocalRef<jstring> jmime_type =
|
| + ConvertUTF8ToJavaString(env, mime_type);
|
| + ScopedJavaLocalRef<jstring> jcookie =
|
| + ConvertUTF8ToJavaString(env, cookie);
|
| + ScopedJavaLocalRef<jstring> jreferer =
|
| + ConvertUTF8ToJavaString(env, referer);
|
| +
|
| + // net::GetSuggestedFilename will fallback to "download" as filename.
|
| + ScopedJavaLocalRef<jstring> jfilename =
|
| + base::android::ConvertUTF16ToJavaString(env, file_name);
|
| + Java_ChromeDownloadDelegate_requestHttpGetDownload(
|
| + env, weak_java_ref_.get(env).obj(),
|
| + jurl.obj(), juser_agent.obj(), jcontent_disposition.obj(),
|
| + jmime_type.obj(), jcookie.obj(), jreferer.obj(), has_user_gesture,
|
| + jfilename.obj(), content_length, must_download);
|
| +}
|
| +
|
| +void ChromeDownloadDelegate::OnDownloadStarted(const std::string& filename,
|
| + const std::string& mime_type) {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + ScopedJavaLocalRef<jstring> jfilename = ConvertUTF8ToJavaString(
|
| + env, filename);
|
| + ScopedJavaLocalRef<jstring> jmime_type =
|
| + ConvertUTF8ToJavaString(env, mime_type);
|
| + Java_ChromeDownloadDelegate_onDownloadStarted(
|
| + env, weak_java_ref_.get(env).obj(), jfilename.obj(), jmime_type.obj());
|
| +}
|
| +
|
| +void ChromeDownloadDelegate::OnDangerousDownload(const std::string& filename,
|
| + const std::string& guid) {
|
| +
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + ScopedJavaLocalRef<jstring> jfilename = ConvertUTF8ToJavaString(
|
| + env, filename);
|
| + ScopedJavaLocalRef<jstring> jguid = ConvertUTF8ToJavaString(env, guid);
|
| + Java_ChromeDownloadDelegate_onDangerousDownload(
|
| + env, weak_java_ref_.get(env).obj(), jfilename.obj(), jguid.obj());
|
| +}
|
| +
|
| +void ChromeDownloadDelegate::RequestFileAccess(intptr_t callback_id) {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + Java_ChromeDownloadDelegate_requestFileAccess(
|
| + env, weak_java_ref_.get(env).obj(), callback_id);
|
| +}
|
| +
|
| bool RegisterChromeDownloadDelegate(JNIEnv* env) {
|
| return RegisterNativesImpl(env);
|
| }
|
| +
|
| +DEFINE_WEB_CONTENTS_USER_DATA_KEY(ChromeDownloadDelegate);
|
|
|