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

Unified Diff: chrome/browser/android/download/download_controller.cc

Issue 2902453003: Remove DownloadController java weak reference (Closed)
Patch Set: Created 3 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
« no previous file with comments | « chrome/browser/android/download/download_controller.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/android/download/download_controller.cc
diff --git a/chrome/browser/android/download/download_controller.cc b/chrome/browser/android/download/download_controller.cc
index acd8f29423d896d954b117edea86b368ff54de15..43004b3529c393da22118579980e6f7bc18b1944 100644
--- a/chrome/browser/android/download/download_controller.cc
+++ b/chrome/browser/android/download/download_controller.cc
@@ -108,14 +108,9 @@ bool IsInterruptedDownloadAutoResumable(content::DownloadItem* download_item) {
} // namespace
-// JNI methods
-static void Init(JNIEnv* env, const JavaParamRef<jobject>& obj) {
- DownloadController::GetInstance()->Init(env, obj);
-}
-
static void OnAcquirePermissionResult(
JNIEnv* env,
- const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jclass>& clazz,
jlong callback_id,
jboolean granted,
const JavaParamRef<jstring>& jpermission_to_update) {
@@ -156,13 +151,6 @@ static void OnRequestFileAccessResult(
cb.Run(granted);
}
-struct DownloadController::JavaObject {
- ScopedJavaLocalRef<jobject> Controller(JNIEnv* env) {
- return GetRealObject(env, obj_);
- }
- jweak obj_;
-};
-
// static
bool DownloadController::RegisterDownloadController(JNIEnv* env) {
return RegisterNativesImpl(env);
@@ -195,24 +183,9 @@ DownloadController* DownloadController::GetInstance() {
return base::Singleton<DownloadController>::get();
}
-DownloadController::DownloadController()
- : java_object_(NULL) {
-}
-
-DownloadController::~DownloadController() {
- if (java_object_) {
- JNIEnv* env = base::android::AttachCurrentThread();
- env->DeleteWeakGlobalRef(java_object_->obj_);
- delete java_object_;
- base::android::CheckException(env);
- }
-}
+DownloadController::DownloadController() = default;
-// Initialize references to Java object.
-void DownloadController::Init(JNIEnv* env, jobject obj) {
- java_object_ = new JavaObject;
- java_object_->obj_ = env->NewWeakGlobalRef(obj);
-}
+DownloadController::~DownloadController() = default;
void DownloadController::AcquireFileAccessPermission(
const content::ResourceRequestInfo::WebContentsGetter& web_contents_getter,
@@ -231,8 +204,7 @@ void DownloadController::AcquireFileAccessPermission(
intptr_t callback_id =
reinterpret_cast<intptr_t>(new AcquirePermissionCallback(callback));
JNIEnv* env = base::android::AttachCurrentThread();
- Java_DownloadController_requestFileAccess(
- env, GetJavaObject()->Controller(env), callback_id);
+ Java_DownloadController_requestFileAccess(env, callback_id);
}
void DownloadController::CreateAndroidDownload(
@@ -288,9 +260,8 @@ void DownloadController::StartAndroidDownloadInternal(
WebContents* web_contents = wc_getter.Run();
if (web_contents) {
TabAndroid* tab = TabAndroid::FromWebContents(web_contents);
- if (tab && !tab->GetJavaObject().is_null()) {
+ if (tab && !tab->GetJavaObject().is_null())
Java_DownloadController_closeTabIfBlank(env, tab->GetJavaObject());
- }
}
}
@@ -298,8 +269,7 @@ bool DownloadController::HasFileAccessPermission() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
JNIEnv* env = base::android::AttachCurrentThread();
- return Java_DownloadController_hasFileAccess(
- env, GetJavaObject()->Controller(env));
+ return Java_DownloadController_hasFileAccess(env);
}
void DownloadController::OnDownloadStarted(
@@ -309,10 +279,8 @@ void DownloadController::OnDownloadStarted(
// For dangerous item, we need to show the dangerous infobar before the
// download can start.
JNIEnv* env = base::android::AttachCurrentThread();
- if (!download_item->IsDangerous()) {
- Java_DownloadController_onDownloadStarted(
- env, GetJavaObject()->Controller(env));
- }
+ if (!download_item->IsDangerous())
+ Java_DownloadController_onDownloadStarted(env);
WebContents* web_contents = download_item->GetWebContents();
if (web_contents) {
@@ -342,8 +310,7 @@ void DownloadController::OnDownloadUpdated(DownloadItem* item) {
DownloadManagerService::CreateJavaDownloadInfo(env, item);
switch (item->GetState()) {
case DownloadItem::IN_PROGRESS: {
- Java_DownloadController_onDownloadUpdated(
- env, GetJavaObject()->Controller(env), j_item);
+ Java_DownloadController_onDownloadUpdated(env, j_item);
break;
}
case DownloadItem::COMPLETE:
@@ -352,14 +319,12 @@ void DownloadController::OnDownloadUpdated(DownloadItem* item) {
item->RemoveObserver(this);
// Call onDownloadCompleted
- Java_DownloadController_onDownloadCompleted(
- env, GetJavaObject()->Controller(env), j_item);
+ Java_DownloadController_onDownloadCompleted(env, j_item);
DownloadController::RecordDownloadCancelReason(
DownloadController::CANCEL_REASON_NOT_CANCELED);
break;
case DownloadItem::CANCELLED:
- Java_DownloadController_onDownloadCancelled(
- env, GetJavaObject()->Controller(env), j_item);
+ Java_DownloadController_onDownloadCancelled(env, j_item);
DownloadController::RecordDownloadCancelReason(
DownloadController::CANCEL_REASON_OTHER_NATIVE_RESONS);
break;
@@ -367,8 +332,7 @@ void DownloadController::OnDownloadUpdated(DownloadItem* item) {
// When device loses/changes network, we get a NETWORK_TIMEOUT,
// NETWORK_FAILED or NETWORK_DISCONNECTED error. Download should auto
// resume in this case.
- Java_DownloadController_onDownloadInterrupted(
- env, GetJavaObject()->Controller(env), j_item,
+ Java_DownloadController_onDownloadInterrupted(env, j_item,
IsInterruptedDownloadAutoResumable(item));
item->RemoveObserver(this);
break;
@@ -388,20 +352,6 @@ void DownloadController::OnDangerousDownload(DownloadItem* item) {
InfoBarService::FromWebContents(web_contents), item);
}
-DownloadController::JavaObject*
- DownloadController::GetJavaObject() {
- if (!java_object_) {
- // Initialize Java DownloadController by calling
- // DownloadController.getInstance(), which will call Init()
- // if Java DownloadController is not instantiated already.
- JNIEnv* env = base::android::AttachCurrentThread();
- Java_DownloadController_getInstance(env);
- }
-
- DCHECK(java_object_);
- return java_object_;
-}
-
void DownloadController::StartContextMenuDownload(
const ContextMenuParams& params, WebContents* web_contents, bool is_link,
const std::string& extra_headers) {
« no previous file with comments | « chrome/browser/android/download/download_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698