| Index: chrome/browser/chromeos/drive/download_handler.cc
|
| diff --git a/chrome/browser/chromeos/drive/download_handler.cc b/chrome/browser/chromeos/drive/download_handler.cc
|
| index f9032531549f1fca2cdec78b8c15309a8bdb58de..08ba2596b4d846c95a8f8eaaa29d8acab7f0e2d9 100644
|
| --- a/chrome/browser/chromeos/drive/download_handler.cc
|
| +++ b/chrome/browser/chromeos/drive/download_handler.cc
|
| @@ -141,11 +141,18 @@ void DownloadHandler::Initialize(
|
| download_manager->GetAllDownloads(&downloads);
|
| for (size_t i = 0; i < downloads.size(); ++i) {
|
| if (IsPersistedDriveDownload(drive_tmp_download_path_, downloads[i]))
|
| - RemoveDownload(downloads[i]->GetId());
|
| + downloads[i]->Remove();
|
| }
|
| }
|
| }
|
|
|
| +void DownloadHandler::ObserveIncognitoDownloadManager(
|
| + DownloadManager* download_manager) {
|
| + DCHECK(!notifier_incognito_);
|
| + notifier_incognito_.reset(new AllDownloadItemNotifier(download_manager,
|
| + this));
|
| +}
|
| +
|
| void DownloadHandler::SubstituteDriveDownloadPath(
|
| const base::FilePath& drive_path,
|
| content::DownloadItem* download,
|
| @@ -223,12 +230,13 @@ void DownloadHandler::OnDownloadCreated(DownloadManager* manager,
|
| FROM_HERE,
|
| base::Bind(&DownloadHandler::RemoveDownload,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| + static_cast<void*>(manager),
|
| download->GetId()));
|
| }
|
| }
|
|
|
| -void DownloadHandler::RemoveDownload(int id) {
|
| - DownloadManager* manager = notifier_->GetManager();
|
| +void DownloadHandler::RemoveDownload(void* manager_id, int id) {
|
| + DownloadManager* manager = GetDownloadManager(manager_id);
|
| if (!manager)
|
| return;
|
| DownloadItem* download = manager->GetDownload(id);
|
| @@ -253,7 +261,7 @@ void DownloadHandler::OnDownloadUpdated(
|
| break;
|
|
|
| case DownloadItem::COMPLETE:
|
| - UploadDownloadItem(download);
|
| + UploadDownloadItem(manager, download);
|
| data->set_complete();
|
| break;
|
|
|
| @@ -289,7 +297,8 @@ void DownloadHandler::OnCreateDirectory(
|
| }
|
| }
|
|
|
| -void DownloadHandler::UploadDownloadItem(DownloadItem* download) {
|
| +void DownloadHandler::UploadDownloadItem(DownloadManager* manager,
|
| + DownloadItem* download) {
|
| DCHECK_EQ(DownloadItem::COMPLETE, download->GetState());
|
| base::FilePath* cache_file_path = new base::FilePath;
|
| WriteOnCacheFileAndReply(
|
| @@ -300,16 +309,18 @@ void DownloadHandler::UploadDownloadItem(DownloadItem* download) {
|
| cache_file_path),
|
| base::Bind(&DownloadHandler::SetCacheFilePath,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| + static_cast<void*>(manager),
|
| download->GetId(),
|
| base::Owned(cache_file_path)));
|
| }
|
|
|
| -void DownloadHandler::SetCacheFilePath(int id,
|
| +void DownloadHandler::SetCacheFilePath(void* manager_id,
|
| + int id,
|
| const base::FilePath* cache_file_path,
|
| FileError error) {
|
| if (error != FILE_ERROR_OK)
|
| return;
|
| - DownloadManager* manager = notifier_->GetManager();
|
| + DownloadManager* manager = GetDownloadManager(manager_id);
|
| if (!manager)
|
| return;
|
| DownloadItem* download = manager->GetDownload(id);
|
| @@ -321,5 +332,12 @@ void DownloadHandler::SetCacheFilePath(int id,
|
| data->set_cache_file_path(*cache_file_path);
|
| }
|
|
|
| +DownloadManager* DownloadHandler::GetDownloadManager(void* manager_id) {
|
| + if (manager_id == notifier_->GetManager())
|
| + return notifier_->GetManager();
|
| + if (notifier_incognito_ && manager_id == notifier_incognito_->GetManager())
|
| + return notifier_incognito_->GetManager();
|
| + return NULL;
|
| +}
|
|
|
| } // namespace drive
|
|
|