Index: content/browser/android/download_controller_android_impl.cc |
diff --git a/content/browser/android/download_controller_android_impl.cc b/content/browser/android/download_controller_android_impl.cc |
index 76d7f85d3882b020b7f4aa0eeecd352cacdff78a..1d150bab0d67f90e4208f2eae3a9413c278e261a 100644 |
--- a/content/browser/android/download_controller_android_impl.cc |
+++ b/content/browser/android/download_controller_android_impl.cc |
@@ -32,6 +32,7 @@ |
#include "content/public/common/content_client.h" |
#include "content/public/common/referrer.h" |
#include "jni/DownloadController_jni.h" |
+#include "net/base/filename_util.h" |
#include "net/cookies/cookie_options.h" |
#include "net/cookies/cookie_store.h" |
#include "net/http/http_content_disposition.h" |
@@ -211,6 +212,11 @@ void DownloadControllerAndroidImpl::AcquireFileAccessPermission( |
env, GetJavaObject()->Controller(env).obj(), view.obj(), callback_id); |
} |
+void DownloadControllerAndroidImpl::SetDefaultDownloadFileName( |
+ const std::string& file_name) { |
+ default_file_name_ = file_name; |
+} |
+ |
bool DownloadControllerAndroidImpl::HasFileAccessPermission( |
ScopedJavaLocalRef<jobject> j_content_view_core) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
@@ -388,11 +394,14 @@ void DownloadControllerAndroidImpl::StartAndroidDownloadInternal( |
ScopedJavaLocalRef<jstring> jreferer = |
ConvertUTF8ToJavaString(env, info.referer); |
- // Try parsing the content disposition header to get a |
- // explicitly specified filename if available. |
- net::HttpContentDisposition header(info.content_disposition, ""); |
+ // net::GetSuggestedFilename will fallback to "download" as filename. |
ScopedJavaLocalRef<jstring> jfilename = |
- ConvertUTF8ToJavaString(env, header.filename()); |
+ base::android::ConvertUTF16ToJavaString( |
+ env, net::GetSuggestedFilename(info.url, info.content_disposition, |
+ std::string(), // referrer_charset |
+ std::string(), // suggested_name |
+ info.original_mime_type, |
+ default_file_name_)); |
Java_DownloadController_newHttpGetDownload( |
env, GetJavaObject()->Controller(env).obj(), view.obj(), jurl.obj(), |