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 |