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

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

Issue 2243423002: [Downloads] Add Incognito support (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Formatting Created 4 years, 4 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_manager_service.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_manager_service.cc
diff --git a/chrome/browser/android/download/download_manager_service.cc b/chrome/browser/android/download/download_manager_service.cc
index 7999c0fe22434b901351033f4d33d03b3eea5bac..2fef219f51c5f74394f35e432bc8f93ad5448d79 100644
--- a/chrome/browser/android/download/download_manager_service.cc
+++ b/chrome/browser/android/download/download_manager_service.cc
@@ -115,50 +115,21 @@ void DownloadManagerService::RemoveDownload(
}
void DownloadManagerService::GetAllDownloads(JNIEnv* env,
- const JavaParamRef<jobject>& obj) {
+ const JavaParamRef<jobject>& obj,
+ bool is_off_the_record) {
if (is_history_query_complete_)
- GetAllDownloadsInternal();
+ GetAllDownloadsInternal(is_off_the_record);
+ else if (is_off_the_record)
+ EnqueueDownloadAction(std::string(), INITIALIZE_OFF_THE_RECORD_UI);
else
EnqueueDownloadAction(std::string(), INITIALIZE_UI);
}
-void DownloadManagerService::GetDownloadInfoFor(
- JNIEnv* env,
- jobject obj,
- const JavaParamRef<jstring>& jdownload_guid,
- bool is_off_the_record) {
- // The UI shouldn't be able to request any info about a specific item until it
- // has been initialized with the list of existing downloads.
- DCHECK(is_history_query_complete_ || is_off_the_record);
-
+void DownloadManagerService::GetAllDownloadsInternal(bool is_off_the_record) {
content::DownloadManager* manager = GetDownloadManager(is_off_the_record);
if (java_ref_.is_null() || !manager)
return;
- // Search through the downloads for the entry with the given GUID.
- content::DownloadManager::DownloadVector all_items;
- manager->GetAllDownloads(&all_items);
- std::string download_guid = ConvertJavaStringToUTF8(env, jdownload_guid);
- for (auto item : all_items) {
- if (item->GetGuid() != download_guid)
- continue;
-
- Java_DownloadManagerService_onDownloadItemUpdated(
- env, java_ref_, ConvertUTF8ToJavaString(env, item->GetGuid()),
- ConvertUTF8ToJavaString(env, item->GetFileNameToReportUser().value()),
- ConvertUTF8ToJavaString(env, item->GetTargetFilePath().value()),
- ConvertUTF8ToJavaString(env, item->GetTabUrl().spec()),
- ConvertUTF8ToJavaString(env, item->GetMimeType()),
- item->GetStartTime().ToJavaTime(), item->GetTotalBytes());
- break;
- }
-}
-
-void DownloadManagerService::GetAllDownloadsInternal() {
- content::DownloadManager* manager = GetDownloadManager(false);
- if (java_ref_.is_null() || !manager)
- return;
-
content::DownloadManager::DownloadVector all_items;
manager->GetAllDownloads(&all_items);
@@ -182,8 +153,8 @@ void DownloadManagerService::GetAllDownloadsInternal() {
item->GetStartTime().ToJavaTime(), item->GetTotalBytes());
}
- Java_DownloadManagerService_onAllDownloadsRetrieved(env, java_ref_,
- j_download_item_list);
+ Java_DownloadManagerService_onAllDownloadsRetrieved(
+ env, java_ref_, j_download_item_list, is_off_the_record);
}
@@ -221,7 +192,10 @@ void DownloadManagerService::OnHistoryQueryComplete() {
CancelDownloadInternal(download_guid, false);
break;
case INITIALIZE_UI:
- GetAllDownloadsInternal();
+ GetAllDownloadsInternal(false);
+ break;
+ case INITIALIZE_OFF_THE_RECORD_UI:
+ GetAllDownloadsInternal(true);
break;
default:
NOTREACHED();
@@ -234,13 +208,47 @@ void DownloadManagerService::OnHistoryQueryComplete() {
content::DownloadManager* manager = GetDownloadManager(false);
if (manager)
original_notifier_.reset(new AllDownloadItemNotifier(manager, this));
+
+ content::DownloadManager* off_the_record_manager = GetDownloadManager(true);
+ if (off_the_record_manager) {
+ off_the_record_notifier_.reset(
+ new AllDownloadItemNotifier(off_the_record_manager, this));
+ }
+}
+
+void DownloadManagerService::OnDownloadUpdated(
+ content::DownloadManager* manager, content::DownloadItem* item) {
+ // Ignore anything that isn't a completed download notification.
+ if (!item->IsDone() || java_ref_.is_null())
+ return;
+
+ JNIEnv* env = base::android::AttachCurrentThread();
+ Java_DownloadManagerService_onDownloadItemUpdated(
+ env,
+ java_ref_.obj(),
+ ConvertUTF8ToJavaString(env, item->GetGuid()).obj(),
+ ConvertUTF8ToJavaString(
+ env, item->GetFileNameToReportUser().value()).obj(),
+ ConvertUTF8ToJavaString(
+ env, item->GetTargetFilePath().value()).obj(),
+ ConvertUTF8ToJavaString(env, item->GetTabUrl().spec()).obj(),
+ ConvertUTF8ToJavaString(env, item->GetMimeType()).obj(),
+ item->GetStartTime().ToJavaTime(),
+ item->GetTotalBytes(),
+ item->GetBrowserContext()->IsOffTheRecord());
}
void DownloadManagerService::OnDownloadRemoved(
content::DownloadManager* manager, content::DownloadItem* item) {
+ if (java_ref_.is_null())
+ return;
+
JNIEnv* env = base::android::AttachCurrentThread();
Java_DownloadManagerService_onDownloadItemRemoved(
- env, java_ref_, ConvertUTF8ToJavaString(env, item->GetGuid()));
+ env,
+ java_ref_.obj(),
+ ConvertUTF8ToJavaString(env, item->GetGuid()),
+ item->GetBrowserContext()->IsOffTheRecord());
}
void DownloadManagerService::ResumeDownloadInternal(
@@ -323,6 +331,7 @@ void DownloadManagerService::EnqueueDownloadAction(
iter->second = action;
break;
case INITIALIZE_UI:
+ case INITIALIZE_OFF_THE_RECORD_UI:
iter->second = action;
break;
default:
« no previous file with comments | « chrome/browser/android/download/download_manager_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698