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

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

Issue 2344483003: Ask download manager to remove a download if it is overwritten by another (Closed)
Patch Set: rename function Created 4 years, 3 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 249a7727797d4ea881d9cc9312c81b6467134f80..361fb9014b395b21d5c3b8ddb3052cd3c78f8793 100644
--- a/chrome/browser/android/download/download_manager_service.cc
+++ b/chrome/browser/android/download/download_manager_service.cc
@@ -44,6 +44,23 @@ void updateNotifier(DownloadManagerService* service,
}
}
+void RemoveDownloadsFromDownloadManager(
+ content::DownloadManager* manager,
+ const base::FilePath& path) {
+ if (!manager)
+ return;
+ content::DownloadManager::DownloadVector all_items;
+ manager->GetAllDownloads(&all_items);
+
+ for (size_t i = 0; i < all_items.size(); i++) {
+ content::DownloadItem* item = all_items[i];
+ if (item->GetState() == content::DownloadItem::COMPLETE &&
+ item->GetTargetFilePath() == path) {
+ item->Remove();
+ }
+ }
+}
+
} // namespace
// static
@@ -65,11 +82,15 @@ void DownloadManagerService::OnDownloadCanceled(
DownloadController::RecordDownloadCancelReason(reason);
}
+// static
+DownloadManagerService* DownloadManagerService::GetInstance() {
+ return base::Singleton<DownloadManagerService>::get();
+}
static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& jobj) {
Profile* profile = ProfileManager::GetActiveUserProfile();
- DownloadManagerService* service =
- new DownloadManagerService(env, jobj);
+ DownloadManagerService* service = DownloadManagerService::GetInstance();
+ service->Init(env, jobj);
DownloadService* download_service =
DownloadServiceFactory::GetForBrowserContext(profile);
DownloadHistory* history = download_service->GetDownloadHistory();
@@ -78,18 +99,21 @@ static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& jobj) {
return reinterpret_cast<intptr_t>(service);
}
-DownloadManagerService::DownloadManagerService(
- JNIEnv* env,
- jobject obj)
- : java_ref_(env, obj),
- is_history_query_complete_(false),
+DownloadManagerService::DownloadManagerService()
+ : is_history_query_complete_(false),
pending_get_downloads_actions_(NONE) {
- DownloadControllerBase::Get()->SetDefaultDownloadFileName(
- l10n_util::GetStringUTF8(IDS_DEFAULT_DOWNLOAD_FILENAME));
}
DownloadManagerService::~DownloadManagerService() {}
+void DownloadManagerService::Init(
+ JNIEnv* env,
+ jobject obj) {
+ java_ref_.Reset(env, obj);
+ DownloadControllerBase::Get()->SetDefaultDownloadFileName(
+ l10n_util::GetStringUTF8(IDS_DEFAULT_DOWNLOAD_FILENAME));
+}
+
void DownloadManagerService::ResumeDownload(
JNIEnv* env,
jobject obj,
@@ -186,6 +210,14 @@ void DownloadManagerService::CheckForExternallyRemovedDownloads(
manager->CheckForHistoryFilesRemoval();
}
+void DownloadManagerService::RemoveDownloadsForPath(
+ const base::FilePath& path) {
+ content::DownloadManager* manager = GetDownloadManager(false);
+ RemoveDownloadsFromDownloadManager(manager, path);
+ manager = GetDownloadManager(true);
+ RemoveDownloadsFromDownloadManager(manager, path);
+}
+
void DownloadManagerService::CancelDownload(
JNIEnv* env,
jobject obj,

Powered by Google App Engine
This is Rietveld 408576698