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) { |