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

Unified Diff: chrome/browser/chromeos/drive/job_scheduler.cc

Issue 507293002: Enrich fileBrowserPrivate.onFileTransfersUpdated event to support displaying total number of jobs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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
Index: chrome/browser/chromeos/drive/job_scheduler.cc
diff --git a/chrome/browser/chromeos/drive/job_scheduler.cc b/chrome/browser/chromeos/drive/job_scheduler.cc
index 13aa7df2d4e9296ca1b1eea5045157cb2d0245cb..61f8d3009641022f596bd7c939b9947b6d6a24b4 100644
--- a/chrome/browser/chromeos/drive/job_scheduler.cc
+++ b/chrome/browser/chromeos/drive/job_scheduler.cc
@@ -704,7 +704,16 @@ void JobScheduler::StartJob(JobEntry* job) {
DCHECK(!job->task.is_null());
QueueJob(job->job_info.job_id);
+ QueueType queue_type = GetJobQueueType(job->job_info.job_type);
+ job->job_info.num_total_jobs = queue_[queue_type]->GetNumberOfJobs();
+ if (queue_type == FILE_QUEUE) {
+ job->job_info.state = STATE_NEW;
+ }
NotifyJobAdded(job->job_info);
+ if (job->job_info.num_total_jobs == 1) {
+ base::TimeDelta delay = base::TimeDelta::FromMilliseconds(500);
hirono 2014/08/27 08:37:20 It looks to affect actual performance. Can we dela
iseki 2014/08/28 07:13:32 Done.
+ wait_until_ = std::max(wait_until_, base::Time::Now() + delay);
+ }
DoJobLoop(GetJobQueueType(job->job_info.job_type));
}
@@ -766,6 +775,7 @@ void JobScheduler::DoJobLoop(QueueType queue_type) {
JobInfo* job_info = &entry->job_info;
job_info->state = STATE_RUNNING;
job_info->start_time = now;
+ job_info->num_total_jobs = queue_[queue_type]->GetNumberOfJobs();
NotifyJobUpdated(*job_info);
entry->cancel_callback = entry->task.Run();
@@ -853,6 +863,8 @@ bool JobScheduler::OnJobDone(JobID job_id, google_apis::GDataErrorCode error) {
if (should_retry) {
job_entry->cancel_callback.Reset();
job_info->state = STATE_RETRY;
+ QueueType queue_type = GetJobQueueType(job_info->job_type);
+ job_info->num_total_jobs = queue_[queue_type]->GetNumberOfJobs();
NotifyJobUpdated(*job_info);
++job_entry->retry_count;
@@ -860,6 +872,8 @@ bool JobScheduler::OnJobDone(JobID job_id, google_apis::GDataErrorCode error) {
// Requeue the job.
QueueJob(job_id);
} else {
+ QueueType queue_type = GetJobQueueType(job_info->job_type);
+ job_info->num_total_jobs = queue_[queue_type]->GetNumberOfJobs();
NotifyJobDone(*job_info, error);
// The job has finished, no retry will happen in the scheduler. Now we can
// remove the job info from the map.
@@ -1037,6 +1051,8 @@ void JobScheduler::UpdateProgress(JobID job_id, int64 progress, int64 total) {
job_entry->job_info.num_completed_bytes = progress;
if (total != -1)
job_entry->job_info.num_total_bytes = total;
+ QueueType queue_type = GetJobQueueType(job_entry->job_info.job_type);
+ job_entry->job_info.num_total_jobs = queue_[queue_type]->GetNumberOfJobs();
NotifyJobUpdated(job_entry->job_info);
}
@@ -1098,6 +1114,7 @@ void JobScheduler::AbortNotRunningJob(JobEntry* job,
base::Callback<void(google_apis::GDataErrorCode)> callback =
job->abort_callback;
queue_[GetJobQueueType(job->job_info.job_type)]->Remove(job->job_info.job_id);
+ job->job_info.num_total_jobs = queue_[queue_type]->GetNumberOfJobs();
NotifyJobDone(job->job_info, error);
job_map_.Remove(job->job_info.job_id);
base::MessageLoopProxy::current()->PostTask(FROM_HERE,

Powered by Google App Engine
This is Rietveld 408576698