| 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" |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 262 &DriveServiceInterface::GetAppList, | 262 &DriveServiceInterface::GetAppList, |
| 263 base::Unretained(drive_service_), | 263 base::Unretained(drive_service_), |
| 264 base::Bind(&JobScheduler::OnGetAppListJobDone, | 264 base::Bind(&JobScheduler::OnGetAppListJobDone, |
| 265 weak_ptr_factory_.GetWeakPtr(), | 265 weak_ptr_factory_.GetWeakPtr(), |
| 266 new_job->job_info.job_id, | 266 new_job->job_info.job_id, |
| 267 callback)); | 267 callback)); |
| 268 new_job->abort_callback = CreateErrorRunCallback(callback); | 268 new_job->abort_callback = CreateErrorRunCallback(callback); |
| 269 StartJob(new_job); | 269 StartJob(new_job); |
| 270 } | 270 } |
| 271 | 271 |
| 272 void JobScheduler::GetAllResourceList( | 272 void JobScheduler::GetAllFileList( |
| 273 const google_apis::GetResourceListCallback& callback) { | 273 const google_apis::FileListCallback& callback) { |
| 274 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 274 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 275 DCHECK(!callback.is_null()); | 275 DCHECK(!callback.is_null()); |
| 276 | 276 |
| 277 JobEntry* new_job = CreateNewJob(TYPE_GET_ALL_RESOURCE_LIST); | 277 JobEntry* new_job = CreateNewJob(TYPE_GET_ALL_RESOURCE_LIST); |
| 278 new_job->task = base::Bind( | 278 new_job->task = base::Bind( |
| 279 &DriveServiceInterface::GetAllFileList, | 279 &DriveServiceInterface::GetAllFileList, |
| 280 base::Unretained(drive_service_), | 280 base::Unretained(drive_service_), |
| 281 base::Bind(&JobScheduler::OnGetFileListJobDone, | 281 base::Bind(&JobScheduler::OnGetFileListJobDone, |
| 282 weak_ptr_factory_.GetWeakPtr(), | 282 weak_ptr_factory_.GetWeakPtr(), |
| 283 new_job->job_info.job_id, | 283 new_job->job_info.job_id, |
| 284 callback)); | 284 callback)); |
| 285 new_job->abort_callback = CreateErrorRunCallback(callback); | 285 new_job->abort_callback = CreateErrorRunCallback(callback); |
| 286 StartJob(new_job); | 286 StartJob(new_job); |
| 287 } | 287 } |
| 288 | 288 |
| 289 void JobScheduler::GetResourceListInDirectory( | 289 void JobScheduler::GetFileListInDirectory( |
| 290 const std::string& directory_resource_id, | 290 const std::string& directory_resource_id, |
| 291 const google_apis::GetResourceListCallback& callback) { | 291 const google_apis::FileListCallback& callback) { |
| 292 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 292 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 293 DCHECK(!callback.is_null()); | 293 DCHECK(!callback.is_null()); |
| 294 | 294 |
| 295 JobEntry* new_job = CreateNewJob( | 295 JobEntry* new_job = CreateNewJob( |
| 296 TYPE_GET_RESOURCE_LIST_IN_DIRECTORY); | 296 TYPE_GET_RESOURCE_LIST_IN_DIRECTORY); |
| 297 new_job->task = base::Bind( | 297 new_job->task = base::Bind( |
| 298 &DriveServiceInterface::GetFileListInDirectory, | 298 &DriveServiceInterface::GetFileListInDirectory, |
| 299 base::Unretained(drive_service_), | 299 base::Unretained(drive_service_), |
| 300 directory_resource_id, | 300 directory_resource_id, |
| 301 base::Bind(&JobScheduler::OnGetFileListJobDone, | 301 base::Bind(&JobScheduler::OnGetFileListJobDone, |
| 302 weak_ptr_factory_.GetWeakPtr(), | 302 weak_ptr_factory_.GetWeakPtr(), |
| 303 new_job->job_info.job_id, | 303 new_job->job_info.job_id, |
| 304 callback)); | 304 callback)); |
| 305 new_job->abort_callback = CreateErrorRunCallback(callback); | 305 new_job->abort_callback = CreateErrorRunCallback(callback); |
| 306 StartJob(new_job); | 306 StartJob(new_job); |
| 307 } | 307 } |
| 308 | 308 |
| 309 void JobScheduler::Search( | 309 void JobScheduler::Search(const std::string& search_query, |
| 310 const std::string& search_query, | 310 const google_apis::FileListCallback& callback) { |
| 311 const google_apis::GetResourceListCallback& callback) { | |
| 312 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 311 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 313 DCHECK(!callback.is_null()); | 312 DCHECK(!callback.is_null()); |
| 314 | 313 |
| 315 JobEntry* new_job = CreateNewJob(TYPE_SEARCH); | 314 JobEntry* new_job = CreateNewJob(TYPE_SEARCH); |
| 316 new_job->task = base::Bind( | 315 new_job->task = base::Bind( |
| 317 &DriveServiceInterface::Search, | 316 &DriveServiceInterface::Search, |
| 318 base::Unretained(drive_service_), | 317 base::Unretained(drive_service_), |
| 319 search_query, | 318 search_query, |
| 320 base::Bind(&JobScheduler::OnGetFileListJobDone, | 319 base::Bind(&JobScheduler::OnGetFileListJobDone, |
| 321 weak_ptr_factory_.GetWeakPtr(), | 320 weak_ptr_factory_.GetWeakPtr(), |
| 322 new_job->job_info.job_id, | 321 new_job->job_info.job_id, |
| 323 callback)); | 322 callback)); |
| 324 new_job->abort_callback = CreateErrorRunCallback(callback); | 323 new_job->abort_callback = CreateErrorRunCallback(callback); |
| 325 StartJob(new_job); | 324 StartJob(new_job); |
| 326 } | 325 } |
| 327 | 326 |
| 328 void JobScheduler::GetChangeList( | 327 void JobScheduler::GetChangeList( |
| 329 int64 start_changestamp, | 328 int64 start_changestamp, |
| 330 const google_apis::GetResourceListCallback& callback) { | 329 const google_apis::ChangeListCallback& callback) { |
| 331 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 330 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 332 DCHECK(!callback.is_null()); | 331 DCHECK(!callback.is_null()); |
| 333 | 332 |
| 334 JobEntry* new_job = CreateNewJob(TYPE_GET_CHANGE_LIST); | 333 JobEntry* new_job = CreateNewJob(TYPE_GET_CHANGE_LIST); |
| 335 new_job->task = base::Bind( | 334 new_job->task = base::Bind( |
| 336 &DriveServiceInterface::GetChangeList, | 335 &DriveServiceInterface::GetChangeList, |
| 337 base::Unretained(drive_service_), | 336 base::Unretained(drive_service_), |
| 338 start_changestamp, | 337 start_changestamp, |
| 339 base::Bind(&JobScheduler::OnGetChangeListJobDone, | 338 base::Bind(&JobScheduler::OnGetChangeListJobDone, |
| 340 weak_ptr_factory_.GetWeakPtr(), | 339 weak_ptr_factory_.GetWeakPtr(), |
| 341 new_job->job_info.job_id, | 340 new_job->job_info.job_id, |
| 342 callback)); | 341 callback)); |
| 343 new_job->abort_callback = CreateErrorRunCallback(callback); | 342 new_job->abort_callback = CreateErrorRunCallback(callback); |
| 344 StartJob(new_job); | 343 StartJob(new_job); |
| 345 } | 344 } |
| 346 | 345 |
| 347 void JobScheduler::GetRemainingChangeList( | 346 void JobScheduler::GetRemainingChangeList( |
| 348 const GURL& next_link, | 347 const GURL& next_link, |
| 349 const google_apis::GetResourceListCallback& callback) { | 348 const google_apis::ChangeListCallback& callback) { |
| 350 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 349 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 351 DCHECK(!callback.is_null()); | 350 DCHECK(!callback.is_null()); |
| 352 | 351 |
| 353 JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_CHANGE_LIST); | 352 JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_CHANGE_LIST); |
| 354 new_job->task = base::Bind( | 353 new_job->task = base::Bind( |
| 355 &DriveServiceInterface::GetRemainingChangeList, | 354 &DriveServiceInterface::GetRemainingChangeList, |
| 356 base::Unretained(drive_service_), | 355 base::Unretained(drive_service_), |
| 357 next_link, | 356 next_link, |
| 358 base::Bind(&JobScheduler::OnGetChangeListJobDone, | 357 base::Bind(&JobScheduler::OnGetChangeListJobDone, |
| 359 weak_ptr_factory_.GetWeakPtr(), | 358 weak_ptr_factory_.GetWeakPtr(), |
| 360 new_job->job_info.job_id, | 359 new_job->job_info.job_id, |
| 361 callback)); | 360 callback)); |
| 362 new_job->abort_callback = CreateErrorRunCallback(callback); | 361 new_job->abort_callback = CreateErrorRunCallback(callback); |
| 363 StartJob(new_job); | 362 StartJob(new_job); |
| 364 } | 363 } |
| 365 | 364 |
| 366 void JobScheduler::GetRemainingFileList( | 365 void JobScheduler::GetRemainingFileList( |
| 367 const GURL& next_link, | 366 const GURL& next_link, |
| 368 const google_apis::GetResourceListCallback& callback) { | 367 const google_apis::FileListCallback& callback) { |
| 369 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 368 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 370 DCHECK(!callback.is_null()); | 369 DCHECK(!callback.is_null()); |
| 371 | 370 |
| 372 JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_FILE_LIST); | 371 JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_FILE_LIST); |
| 373 new_job->task = base::Bind( | 372 new_job->task = base::Bind( |
| 374 &DriveServiceInterface::GetRemainingFileList, | 373 &DriveServiceInterface::GetRemainingFileList, |
| 375 base::Unretained(drive_service_), | 374 base::Unretained(drive_service_), |
| 376 next_link, | 375 next_link, |
| 377 base::Bind(&JobScheduler::OnGetFileListJobDone, | 376 base::Bind(&JobScheduler::OnGetFileListJobDone, |
| 378 weak_ptr_factory_.GetWeakPtr(), | 377 weak_ptr_factory_.GetWeakPtr(), |
| (...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 895 // the current job before starting the next one. | 894 // the current job before starting the next one. |
| 896 base::MessageLoopProxy::current()->PostTask(FROM_HERE, | 895 base::MessageLoopProxy::current()->PostTask(FROM_HERE, |
| 897 base::Bind(&JobScheduler::DoJobLoop, | 896 base::Bind(&JobScheduler::DoJobLoop, |
| 898 weak_ptr_factory_.GetWeakPtr(), | 897 weak_ptr_factory_.GetWeakPtr(), |
| 899 queue_type)); | 898 queue_type)); |
| 900 return !should_retry; | 899 return !should_retry; |
| 901 } | 900 } |
| 902 | 901 |
| 903 void JobScheduler::OnGetFileListJobDone( | 902 void JobScheduler::OnGetFileListJobDone( |
| 904 JobID job_id, | 903 JobID job_id, |
| 905 const google_apis::GetResourceListCallback& callback, | 904 const google_apis::FileListCallback& callback, |
| 906 google_apis::GDataErrorCode error, | 905 google_apis::GDataErrorCode error, |
| 907 scoped_ptr<google_apis::FileList> file_list) { | 906 scoped_ptr<google_apis::FileList> file_list) { |
| 908 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 907 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 909 DCHECK(!callback.is_null()); | 908 DCHECK(!callback.is_null()); |
| 910 | 909 |
| 911 if (OnJobDone(job_id, error)) { | 910 if (OnJobDone(job_id, error)) |
| 912 callback.Run(error, file_list ? | 911 callback.Run(error, file_list.Pass()); |
| 913 util::ConvertFileListToResourceList(*file_list) : | |
| 914 scoped_ptr<google_apis::ResourceList>()); | |
| 915 } | |
| 916 } | 912 } |
| 917 | 913 |
| 918 void JobScheduler::OnGetChangeListJobDone( | 914 void JobScheduler::OnGetChangeListJobDone( |
| 919 JobID job_id, | 915 JobID job_id, |
| 920 const google_apis::GetResourceListCallback& callback, | 916 const google_apis::ChangeListCallback& callback, |
| 921 google_apis::GDataErrorCode error, | 917 google_apis::GDataErrorCode error, |
| 922 scoped_ptr<google_apis::ChangeList> change_list) { | 918 scoped_ptr<google_apis::ChangeList> change_list) { |
| 923 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 919 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 924 DCHECK(!callback.is_null()); | 920 DCHECK(!callback.is_null()); |
| 925 | 921 |
| 926 if (OnJobDone(job_id, error)) { | 922 if (OnJobDone(job_id, error)) |
| 927 callback.Run(error, change_list ? | 923 callback.Run(error, change_list.Pass()); |
| 928 util::ConvertChangeListToResourceList(*change_list) : | |
| 929 scoped_ptr<google_apis::ResourceList>()); | |
| 930 | |
| 931 } | |
| 932 } | 924 } |
| 933 | 925 |
| 934 void JobScheduler::OnGetFileResourceJobDone( | 926 void JobScheduler::OnGetFileResourceJobDone( |
| 935 JobID job_id, | 927 JobID job_id, |
| 936 const google_apis::GetResourceEntryCallback& callback, | 928 const google_apis::GetResourceEntryCallback& callback, |
| 937 google_apis::GDataErrorCode error, | 929 google_apis::GDataErrorCode error, |
| 938 scoped_ptr<google_apis::FileResource> entry) { | 930 scoped_ptr<google_apis::FileResource> entry) { |
| 939 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 931 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 940 DCHECK(!callback.is_null()); | 932 DCHECK(!callback.is_null()); |
| 941 | 933 |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1175 case FILE_QUEUE: | 1167 case FILE_QUEUE: |
| 1176 return "FILE_QUEUE"; | 1168 return "FILE_QUEUE"; |
| 1177 case NUM_QUEUES: | 1169 case NUM_QUEUES: |
| 1178 break; // This value is just a sentinel. Should never be used. | 1170 break; // This value is just a sentinel. Should never be used. |
| 1179 } | 1171 } |
| 1180 NOTREACHED(); | 1172 NOTREACHED(); |
| 1181 return ""; | 1173 return ""; |
| 1182 } | 1174 } |
| 1183 | 1175 |
| 1184 } // namespace drive | 1176 } // namespace drive |
| OLD | NEW |