OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/drive/job_scheduler.h" | 5 #include "chrome/browser/chromeos/drive/job_scheduler.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
9 #include "base/rand_util.h" | 9 #include "base/rand_util.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
11 #include "base/strings/stringprintf.h" | 11 #include "base/strings/stringprintf.h" |
12 #include "chrome/browser/chromeos/drive/file_system_util.h" | 12 #include "chrome/browser/chromeos/drive/file_system_util.h" |
| 13 #include "chrome/browser/drive/drive_api_util.h" |
13 #include "chrome/browser/drive/event_logger.h" | 14 #include "chrome/browser/drive/event_logger.h" |
14 #include "chrome/common/pref_names.h" | 15 #include "chrome/common/pref_names.h" |
15 #include "content/public/browser/browser_thread.h" | 16 #include "content/public/browser/browser_thread.h" |
16 #include "google_apis/drive/drive_api_parser.h" | 17 #include "google_apis/drive/drive_api_parser.h" |
17 | 18 |
18 using content::BrowserThread; | 19 using content::BrowserThread; |
19 | 20 |
20 namespace drive { | 21 namespace drive { |
21 | 22 |
22 namespace { | 23 namespace { |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 int64 start_changestamp, | 328 int64 start_changestamp, |
328 const google_apis::GetResourceListCallback& callback) { | 329 const google_apis::GetResourceListCallback& callback) { |
329 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 330 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
330 DCHECK(!callback.is_null()); | 331 DCHECK(!callback.is_null()); |
331 | 332 |
332 JobEntry* new_job = CreateNewJob(TYPE_GET_CHANGE_LIST); | 333 JobEntry* new_job = CreateNewJob(TYPE_GET_CHANGE_LIST); |
333 new_job->task = base::Bind( | 334 new_job->task = base::Bind( |
334 &DriveServiceInterface::GetChangeList, | 335 &DriveServiceInterface::GetChangeList, |
335 base::Unretained(drive_service_), | 336 base::Unretained(drive_service_), |
336 start_changestamp, | 337 start_changestamp, |
337 base::Bind(&JobScheduler::OnGetResourceListJobDone, | 338 base::Bind(&JobScheduler::OnGetChangeListJobDone, |
338 weak_ptr_factory_.GetWeakPtr(), | 339 weak_ptr_factory_.GetWeakPtr(), |
339 new_job->job_info.job_id, | 340 new_job->job_info.job_id, |
340 callback)); | 341 callback)); |
341 new_job->abort_callback = CreateErrorRunCallback(callback); | 342 new_job->abort_callback = CreateErrorRunCallback(callback); |
342 StartJob(new_job); | 343 StartJob(new_job); |
343 } | 344 } |
344 | 345 |
345 void JobScheduler::GetRemainingChangeList( | 346 void JobScheduler::GetRemainingChangeList( |
346 const GURL& next_link, | 347 const GURL& next_link, |
347 const google_apis::GetResourceListCallback& callback) { | 348 const google_apis::GetResourceListCallback& callback) { |
348 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 349 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
349 DCHECK(!callback.is_null()); | 350 DCHECK(!callback.is_null()); |
350 | 351 |
351 JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_CHANGE_LIST); | 352 JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_CHANGE_LIST); |
352 new_job->task = base::Bind( | 353 new_job->task = base::Bind( |
353 &DriveServiceInterface::GetRemainingChangeList, | 354 &DriveServiceInterface::GetRemainingChangeList, |
354 base::Unretained(drive_service_), | 355 base::Unretained(drive_service_), |
355 next_link, | 356 next_link, |
356 base::Bind(&JobScheduler::OnGetResourceListJobDone, | 357 base::Bind(&JobScheduler::OnGetChangeListJobDone, |
357 weak_ptr_factory_.GetWeakPtr(), | 358 weak_ptr_factory_.GetWeakPtr(), |
358 new_job->job_info.job_id, | 359 new_job->job_info.job_id, |
359 callback)); | 360 callback)); |
360 new_job->abort_callback = CreateErrorRunCallback(callback); | 361 new_job->abort_callback = CreateErrorRunCallback(callback); |
361 StartJob(new_job); | 362 StartJob(new_job); |
362 } | 363 } |
363 | 364 |
364 void JobScheduler::GetRemainingFileList( | 365 void JobScheduler::GetRemainingFileList( |
365 const GURL& next_link, | 366 const GURL& next_link, |
366 const google_apis::GetResourceListCallback& callback) { | 367 const google_apis::GetResourceListCallback& callback) { |
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
891 | 892 |
892 // Post a task to continue the job loop. This allows us to finish handling | 893 // Post a task to continue the job loop. This allows us to finish handling |
893 // the current job before starting the next one. | 894 // the current job before starting the next one. |
894 base::MessageLoopProxy::current()->PostTask(FROM_HERE, | 895 base::MessageLoopProxy::current()->PostTask(FROM_HERE, |
895 base::Bind(&JobScheduler::DoJobLoop, | 896 base::Bind(&JobScheduler::DoJobLoop, |
896 weak_ptr_factory_.GetWeakPtr(), | 897 weak_ptr_factory_.GetWeakPtr(), |
897 queue_type)); | 898 queue_type)); |
898 return !should_retry; | 899 return !should_retry; |
899 } | 900 } |
900 | 901 |
| 902 void JobScheduler::OnGetChangeListJobDone( |
| 903 JobID job_id, |
| 904 const google_apis::GetResourceListCallback& callback, |
| 905 google_apis::GDataErrorCode error, |
| 906 scoped_ptr<google_apis::ChangeList> change_list) { |
| 907 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 908 DCHECK(!callback.is_null()); |
| 909 |
| 910 if (OnJobDone(job_id, error)) { |
| 911 callback.Run(error, change_list ? |
| 912 util::ConvertChangeListToResourceList(*change_list) : |
| 913 scoped_ptr<google_apis::ResourceList>()); |
| 914 |
| 915 } |
| 916 } |
| 917 |
901 void JobScheduler::OnGetResourceListJobDone( | 918 void JobScheduler::OnGetResourceListJobDone( |
902 JobID job_id, | 919 JobID job_id, |
903 const google_apis::GetResourceListCallback& callback, | 920 const google_apis::GetResourceListCallback& callback, |
904 google_apis::GDataErrorCode error, | 921 google_apis::GDataErrorCode error, |
905 scoped_ptr<google_apis::ResourceList> resource_list) { | 922 scoped_ptr<google_apis::ResourceList> resource_list) { |
906 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 923 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
907 DCHECK(!callback.is_null()); | 924 DCHECK(!callback.is_null()); |
908 | 925 |
909 if (OnJobDone(job_id, error)) | 926 if (OnJobDone(job_id, error)) |
910 callback.Run(error, resource_list.Pass()); | 927 callback.Run(error, resource_list.Pass()); |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1145 case FILE_QUEUE: | 1162 case FILE_QUEUE: |
1146 return "FILE_QUEUE"; | 1163 return "FILE_QUEUE"; |
1147 case NUM_QUEUES: | 1164 case NUM_QUEUES: |
1148 break; // This value is just a sentinel. Should never be used. | 1165 break; // This value is just a sentinel. Should never be used. |
1149 } | 1166 } |
1150 NOTREACHED(); | 1167 NOTREACHED(); |
1151 return ""; | 1168 return ""; |
1152 } | 1169 } |
1153 | 1170 |
1154 } // namespace drive | 1171 } // namespace drive |
OLD | NEW |