Index: chrome/browser/chromeos/drive/drive_scheduler.cc |
diff --git a/chrome/browser/chromeos/drive/drive_scheduler.cc b/chrome/browser/chromeos/drive/drive_scheduler.cc |
index 6150f7681cc3af245bdfe5804c24e38ba8ca921d..1d5220ee375b3ad8b2a615d9d56f29d99b1e137a 100644 |
--- a/chrome/browser/chromeos/drive/drive_scheduler.cc |
+++ b/chrome/browser/chromeos/drive/drive_scheduler.cc |
@@ -305,8 +305,8 @@ void DriveScheduler::DownloadFile( |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
scoped_ptr<QueueEntry> new_job(new QueueEntry); |
- new_job->virtual_path = virtual_path; |
- new_job->local_cache_path = local_cache_path; |
+ new_job->drive_file_path = virtual_path; |
+ new_job->local_file_path = local_cache_path; |
new_job->download_url = download_url; |
new_job->context = context; |
new_job->download_action_callback = download_action_callback; |
@@ -363,6 +363,7 @@ void DriveScheduler::StartNewJob(scoped_ptr<QueueEntry> job, JobType type) { |
// job_info is owned by job_map_ and released when it is removed in OnJobDone. |
JobInfo* job_info = new JobInfo(type); |
job->job_id = job_info->job_id = job_map_.Add(job_info); |
+ job_info->file_path = job->drive_file_path; |
QueueJob(job.Pass()); |
StartJobLoop(GetJobQueueType(type)); |
@@ -556,14 +557,16 @@ void DriveScheduler::DoJobLoop(QueueType queue_type) { |
case TYPE_DOWNLOAD_FILE: { |
drive_service_->DownloadFile( |
- entry->virtual_path, |
- entry->local_cache_path, |
+ entry->drive_file_path, |
+ entry->local_file_path, |
entry->download_url, |
base::Bind(&DriveScheduler::OnDownloadActionJobDone, |
weak_ptr_factory_.GetWeakPtr(), |
base::Passed(&queue_entry)), |
entry->get_content_callback, |
- google_apis::ProgressCallback()); |
+ base::Bind(&DriveScheduler::UpdateProgress, |
+ weak_ptr_factory_.GetWeakPtr(), |
+ job_info->job_id)); |
} |
break; |
@@ -577,7 +580,9 @@ void DriveScheduler::DoJobLoop(QueueType queue_type) { |
base::Bind(&DriveScheduler::OnUploadCompletionJobDone, |
weak_ptr_factory_.GetWeakPtr(), |
base::Passed(&queue_entry)), |
- google_apis::ProgressCallback()); |
+ base::Bind(&DriveScheduler::UpdateProgress, |
+ weak_ptr_factory_.GetWeakPtr(), |
+ job_info->job_id)); |
} |
break; |
@@ -591,7 +596,9 @@ void DriveScheduler::DoJobLoop(QueueType queue_type) { |
base::Bind(&DriveScheduler::OnUploadCompletionJobDone, |
weak_ptr_factory_.GetWeakPtr(), |
base::Passed(&queue_entry)), |
- google_apis::ProgressCallback()); |
+ base::Bind(&DriveScheduler::UpdateProgress, |
+ weak_ptr_factory_.GetWeakPtr(), |
+ job_info->job_id)); |
} |
break; |
@@ -850,6 +857,14 @@ void DriveScheduler::OnUploadCompletionJobDone( |
error, drive_path, file_path, resource_entry.Pass()); |
} |
+void DriveScheduler::UpdateProgress(JobID job_id, int64 progress, int64 total) { |
+ JobInfo* job_info = job_map_.Lookup(job_id); |
+ DCHECK(job_info); |
+ |
+ job_info->num_completed_bytes = progress; |
+ job_info->num_total_bytes = total; |
+} |
+ |
void DriveScheduler::OnConnectionTypeChanged( |
net::NetworkChangeNotifier::ConnectionType type) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |