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

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

Issue 1809203006: Switch to use download GUID to indentify download items (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix merge error Created 4 years, 9 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: chrome/browser/android/download/download_manager_service.cc
diff --git a/chrome/browser/android/download/download_manager_service.cc b/chrome/browser/android/download/download_manager_service.cc
index 0e0ed618c7b49f925847e6da9b82c766834074fc..935f17420f52a3d42d1036ca1b68efe0fc472648 100644
--- a/chrome/browser/android/download/download_manager_service.cc
+++ b/chrome/browser/android/download/download_manager_service.cc
@@ -57,26 +57,34 @@ DownloadManagerService::~DownloadManagerService() {
manager_->RemoveObserver(this);
}
-void DownloadManagerService::ResumeDownload(JNIEnv* env,
- jobject obj,
- uint32_t download_id,
- jstring fileName) {
- ResumeDownloadInternal(download_id, ConvertJavaStringToUTF8(env, fileName),
- true);
+void DownloadManagerService::ResumeDownload(
+ JNIEnv* env,
+ jobject obj,
+ uint32_t download_id,
+ const JavaParamRef<jstring>& jdownload_guid,
+ jstring fileName) {
+ std::string download_guid = ConvertJavaStringToUTF8(env, jdownload_guid);
+ ResumeDownloadInternal(download_id, download_guid,
+ ConvertJavaStringToUTF8(env, fileName), true);
}
-void DownloadManagerService::CancelDownload(JNIEnv* env,
- jobject obj,
- uint32_t download_id) {
- CancelDownloadInternal(download_id, true);
+void DownloadManagerService::CancelDownload(
+ JNIEnv* env,
+ jobject obj,
+ const JavaParamRef<jstring>& jdownload_guid) {
+ std::string download_guid = ConvertJavaStringToUTF8(env, jdownload_guid);
+ CancelDownloadInternal(download_guid, true);
}
-void DownloadManagerService::PauseDownload(JNIEnv* env,
- jobject obj,
- uint32_t download_id) {
- content::DownloadItem* item = manager_->GetDownload(download_id);
+void DownloadManagerService::PauseDownload(
+ JNIEnv* env,
+ jobject obj,
+ const JavaParamRef<jstring>& jdownload_guid) {
+ std::string download_guid = ConvertJavaStringToUTF8(env, jdownload_guid);
+ content::DownloadItem* item = manager_->GetDownloadByGuid(download_guid);
if (item)
item->Pause();
+ item->RemoveObserver(content::DownloadControllerAndroid::Get());
}
void DownloadManagerService::ManagerGoingDown(
@@ -96,14 +104,16 @@ void DownloadManagerService::ResumeDownloadItem(content::DownloadItem* item,
resume_callback_for_testing_.Run(true);
}
-void DownloadManagerService::ResumeDownloadInternal(uint32_t download_id,
- const std::string& fileName,
- bool retry) {
+void DownloadManagerService::ResumeDownloadInternal(
+ uint32_t download_id,
+ const std::string& download_guid,
+ const std::string& fileName,
+ bool retry) {
if (!manager_) {
OnResumptionFailed(download_id, fileName);
return;
}
- content::DownloadItem* item = manager_->GetDownload(download_id);
+ content::DownloadItem* item = manager_->GetDownloadByGuid(download_guid);
if (item) {
ResumeDownloadItem(item, fileName);
return;
@@ -120,25 +130,27 @@ void DownloadManagerService::ResumeDownloadInternal(uint32_t download_id,
// created item might not be loaded from download history. So user might wait
// indefinitely to see the failed notification. See http://crbug.com/577893.
base::MessageLoop::current()->PostDelayedTask(
- FROM_HERE,
- base::Bind(&DownloadManagerService::ResumeDownloadInternal,
- base::Unretained(this), download_id, fileName, false),
+ FROM_HERE, base::Bind(&DownloadManagerService::ResumeDownloadInternal,
+ base::Unretained(this), download_id, download_guid,
+ fileName, false),
base::TimeDelta::FromMilliseconds(kRetryIntervalInMilliseconds));
}
-void DownloadManagerService::CancelDownloadInternal(uint32_t download_id,
- bool retry) {
+void DownloadManagerService::CancelDownloadInternal(
+ const std::string& download_guid,
+ bool retry) {
if (!manager_)
return;
- content::DownloadItem* item = manager_->GetDownload(download_id);
+ content::DownloadItem* item = manager_->GetDownloadByGuid(download_guid);
if (item) {
item->Cancel(true);
+ item->RemoveObserver(content::DownloadControllerAndroid::Get());
return;
}
if (retry) {
base::MessageLoop::current()->PostDelayedTask(
FROM_HERE, base::Bind(&DownloadManagerService::CancelDownloadInternal,
- base::Unretained(this), download_id, false),
+ base::Unretained(this), download_guid, false),
base::TimeDelta::FromMilliseconds(kRetryIntervalInMilliseconds));
}
}

Powered by Google App Engine
This is Rietveld 408576698