Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(810)

Unified Diff: content/browser/android/download_controller_android_impl.cc

Issue 2014803002: Move DownloadControllerAndroid from content/ to chrome/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removed unused vars Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 874e47a361e1c8d3902820bf84da03321c1a2557..f9843cadcd779a3a019f7803d56e00eee5dd20fc 100644
--- a/content/browser/android/download_controller_android_impl.cc
+++ b/content/browser/android/download_controller_android_impl.cc
@@ -40,6 +40,7 @@
#include "net/http/http_response_headers.h"
#include "net/url_request/url_request.h"
#include "net/url_request/url_request_context.h"
+#include "ui/android/window_android.h"
using base::android::ConvertUTF8ToJavaString;
using base::android::ScopedJavaLocalRef;
@@ -59,6 +60,12 @@ content::WebContents* GetWebContents(int render_process_id,
return content::WebContents::FromRenderViewHost(render_view_host);
}
+ScopedJavaLocalRef<jobject>
+GetJavaWebContents(content::WebContents* web_contents) {
+ return (static_cast<content::WebContentsImpl*>(web_contents))
+ ->GetJavaWebContents();
+}
+
void CreateContextMenuDownload(int render_process_id,
int render_view_id,
const content::ContextMenuParams& params,
@@ -203,15 +210,18 @@ void DownloadControllerAndroidImpl::AcquireFileAccessPermission(
DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(web_contents);
- ScopedJavaLocalRef<jobject> view =
- GetContentViewCoreFromWebContents(web_contents);
- if (view.is_null()) {
+ ContentViewCore* view_core = ContentViewCore::FromWebContents(web_contents);
+ if (!view_core) {
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE, base::Bind(cb, false));
return;
}
- if (HasFileAccessPermission(view)) {
+ ScopedJavaLocalRef<jobject> jweb_contents =
+ GetJavaWebContents(web_contents);
+ ScopedJavaLocalRef<jobject> jwindow_android =
+ view_core->GetWindowAndroid()->GetJavaObject();
+ if (HasFileAccessPermission(jwindow_android)) {
BrowserThread::PostTask(
BrowserThread::UI, FROM_HERE, base::Bind(cb, true));
return;
@@ -222,7 +232,8 @@ void DownloadControllerAndroidImpl::AcquireFileAccessPermission(
intptr_t callback_id = reinterpret_cast<intptr_t>(
new DownloadControllerAndroid::AcquireFileAccessPermissionCallback(cb));
Java_DownloadController_requestFileAccess(
- env, GetJavaObject()->Controller(env).obj(), view.obj(), callback_id);
+ env, GetJavaObject()->Controller(env).obj(), jweb_contents.obj(),
+ jwindow_android.obj(), callback_id);
}
void DownloadControllerAndroidImpl::SetDefaultDownloadFileName(
@@ -231,13 +242,13 @@ void DownloadControllerAndroidImpl::SetDefaultDownloadFileName(
}
bool DownloadControllerAndroidImpl::HasFileAccessPermission(
- ScopedJavaLocalRef<jobject> j_content_view_core) {
+ ScopedJavaLocalRef<jobject> jwindow_android) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- DCHECK(!j_content_view_core.is_null());
+ DCHECK(!jwindow_android.is_null());
JNIEnv* env = base::android::AttachCurrentThread();
return Java_DownloadController_hasFileAccess(
- env, GetJavaObject()->Controller(env).obj(), j_content_view_core.obj());
+ env, GetJavaObject()->Controller(env).obj(), jwindow_android.obj());
}
void DownloadControllerAndroidImpl::CreateGETDownload(
@@ -356,19 +367,6 @@ void DownloadControllerAndroidImpl::StartAndroidDownload(
LOG(ERROR) << "Download failed on URL:" << info.url.spec();
return;
}
- ScopedJavaLocalRef<jobject> view =
- GetContentViewCoreFromWebContents(web_contents);
- if (view.is_null()) {
- // ContentViewCore might not have been created yet, pass a callback to
- // DeferredDownloadTaskManager so that the download can restart when
- // ContentViewCore is created.
no sievers 2016/05/27 19:09:25 That would be really neat if we can get rid of thi
Jinsuk Kim 2016/05/30 01:20:57 I don't think we need it any more once the depende
- deferred_downloads_.push_back(new DeferredDownloadObserver(
- web_contents,
- base::Bind(&DownloadControllerAndroidImpl::StartAndroidDownload,
- base::Unretained(this), render_process_id, render_view_id,
- must_download, info)));
- return;
- }
AcquireFileAccessPermission(
web_contents,
@@ -389,10 +387,7 @@ void DownloadControllerAndroidImpl::StartAndroidDownloadInternal(
// The view went away. Can't proceed.
if (!web_contents)
return;
- ScopedJavaLocalRef<jobject> view =
- GetContentViewCoreFromWebContents(web_contents);
- if (view.is_null())
- return;
+ ScopedJavaLocalRef<jobject> jweb_contents = GetJavaWebContents(web_contents);
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jstring> jurl =
@@ -418,10 +413,10 @@ void DownloadControllerAndroidImpl::StartAndroidDownloadInternal(
default_file_name_));
Java_DownloadController_newHttpGetDownload(
- env, GetJavaObject()->Controller(env).obj(), view.obj(), jurl.obj(),
- juser_agent.obj(), jcontent_disposition.obj(), jmime_type.obj(),
- jcookie.obj(), jreferer.obj(), info.has_user_gesture, jfilename.obj(),
- info.total_bytes, must_download);
+ env, GetJavaObject()->Controller(env).obj(), jweb_contents.obj(),
+ jurl.obj(), juser_agent.obj(), jcontent_disposition.obj(),
+ jmime_type.obj(), jcookie.obj(), jreferer.obj(), info.has_user_gesture,
+ jfilename.obj(), info.total_bytes, must_download);
}
void DownloadControllerAndroidImpl::OnDownloadStarted(
@@ -435,19 +430,16 @@ void DownloadControllerAndroidImpl::OnDownloadStarted(
// Register for updates to the DownloadItem.
download_item->AddObserver(this);
- ScopedJavaLocalRef<jobject> view =
- GetContentViewCoreFromWebContents(download_item->GetWebContents());
- // The view went away. Can't proceed.
- if (view.is_null())
- return;
+ ScopedJavaLocalRef<jobject> jweb_contents =
+ GetJavaWebContents(download_item->GetWebContents());
ScopedJavaLocalRef<jstring> jmime_type =
ConvertUTF8ToJavaString(env, download_item->GetMimeType());
ScopedJavaLocalRef<jstring> jfilename = ConvertUTF8ToJavaString(
env, download_item->GetTargetFilePath().BaseName().value());
Java_DownloadController_onDownloadStarted(
- env, GetJavaObject()->Controller(env).obj(), view.obj(), jfilename.obj(),
- jmime_type.obj());
+ env, GetJavaObject()->Controller(env).obj(), jweb_contents.obj(),
+ jfilename.obj(), jmime_type.obj());
}
void DownloadControllerAndroidImpl::OnDownloadUpdated(DownloadItem* item) {
@@ -523,11 +515,11 @@ void DownloadControllerAndroidImpl::OnDangerousDownload(DownloadItem* item) {
env, item->GetTargetFilePath().BaseName().value());
ScopedJavaLocalRef<jstring> jguid =
ConvertUTF8ToJavaString(env, item->GetGuid());
- ScopedJavaLocalRef<jobject> view_core = GetContentViewCoreFromWebContents(
+ ScopedJavaLocalRef<jobject> jweb_contents = GetJavaWebContents(
item->GetWebContents());
- if (!view_core.is_null()) {
+ if (!jweb_contents.is_null()) {
Java_DownloadController_onDangerousDownload(
- env, GetJavaObject()->Controller(env).obj(), view_core.obj(),
+ env, GetJavaObject()->Controller(env).obj(), jweb_contents.obj(),
jfilename.obj(), jguid.obj());
}
}

Powered by Google App Engine
This is Rietveld 408576698