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

Side by Side Diff: chrome/browser/chromeos/drive/job_scheduler.cc

Issue 77553006: google_apis: Random fix in task_util.h (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/google_apis/task_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/chromeos/drive/logging.h" 13 #include "chrome/browser/chromeos/drive/logging.h"
14 #include "chrome/browser/google_apis/drive_api_parser.h" 14 #include "chrome/browser/google_apis/drive_api_parser.h"
15 #include "chrome/browser/google_apis/task_util.h"
16 #include "chrome/common/pref_names.h" 15 #include "chrome/common/pref_names.h"
17 #include "content/public/browser/browser_thread.h" 16 #include "content/public/browser/browser_thread.h"
18 17
19 using content::BrowserThread; 18 using content::BrowserThread;
20 19
21 namespace drive { 20 namespace drive {
22 21
23 namespace { 22 namespace {
24 23
25 // All jobs are retried at maximum of kMaxRetryCount when they fail due to 24 // All jobs are retried at maximum of kMaxRetryCount when they fail due to
26 // throttling or server error. The delay before retrying a job is shared among 25 // throttling or server error. The delay before retrying a job is shared among
27 // jobs. It doubles in length on each failure, upto 2^kMaxThrottleCount seconds. 26 // jobs. It doubles in length on each failure, upto 2^kMaxThrottleCount seconds.
28 // 27 //
29 // According to the API documentation, kMaxRetryCount should be the same as 28 // According to the API documentation, kMaxRetryCount should be the same as
30 // kMaxThrottleCount (https://developers.google.com/drive/handle-errors). 29 // kMaxThrottleCount (https://developers.google.com/drive/handle-errors).
31 // But currently multiplied by 2 to ensure upload related jobs retried for a 30 // But currently multiplied by 2 to ensure upload related jobs retried for a
32 // sufficient number of times. crbug.com/269918 31 // sufficient number of times. crbug.com/269918
33 const int kMaxThrottleCount = 4; 32 const int kMaxThrottleCount = 4;
34 const int kMaxRetryCount = 2 * kMaxThrottleCount; 33 const int kMaxRetryCount = 2 * kMaxThrottleCount;
35 34
35 // GetDefaultValue returns a value constructed by the default constructor.
36 template<typename T> struct DefaultValueCreator {
37 static T GetDefaultValue() { return T(); }
38 };
39 template<typename T> struct DefaultValueCreator<const T&> {
40 static T GetDefaultValue() { return T(); }
41 };
42
43 // Helper of CreateErrorRunCallback implementation.
44 // Provides:
45 // - ResultType; the type of the Callback which should be returned by
46 // CreateErrorRunCallback.
47 // - Run(): a static function which takes the original |callback| and |error|,
48 // and runs the |callback|.Run() with the error code and default values
49 // for remaining arguments.
50 template<typename CallbackType> struct CreateErrorRunCallbackHelper;
51
52 // CreateErrorRunCallback with two arguments.
53 template<typename P1>
54 struct CreateErrorRunCallbackHelper<void(google_apis::GDataErrorCode, P1)> {
55 static void Run(
56 const base::Callback<void(google_apis::GDataErrorCode, P1)>& callback,
57 google_apis::GDataErrorCode error) {
58 callback.Run(error, DefaultValueCreator<P1>::GetDefaultValue());
59 }
60 };
61
62 // Returns a callback with the tail parameter bound to its default value.
63 // In other words, returned_callback.Run(error) runs callback.Run(error, T()).
64 template<typename CallbackType>
65 base::Callback<void(google_apis::GDataErrorCode)>
66 CreateErrorRunCallback(const base::Callback<CallbackType>& callback) {
67 return base::Bind(&CreateErrorRunCallbackHelper<CallbackType>::Run, callback);
68 }
69
36 // Parameter struct for RunUploadNewFile. 70 // Parameter struct for RunUploadNewFile.
37 struct UploadNewFileParams { 71 struct UploadNewFileParams {
38 std::string parent_resource_id; 72 std::string parent_resource_id;
39 base::FilePath local_file_path; 73 base::FilePath local_file_path;
40 std::string title; 74 std::string title;
41 std::string content_type; 75 std::string content_type;
42 UploadCompletionCallback callback; 76 UploadCompletionCallback callback;
43 google_apis::ProgressCallback progress_callback; 77 google_apis::ProgressCallback progress_callback;
44 }; 78 };
45 79
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 DCHECK(!callback.is_null()); 235 DCHECK(!callback.is_null());
202 236
203 JobEntry* new_job = CreateNewJob(TYPE_GET_ABOUT_RESOURCE); 237 JobEntry* new_job = CreateNewJob(TYPE_GET_ABOUT_RESOURCE);
204 new_job->task = base::Bind( 238 new_job->task = base::Bind(
205 &DriveServiceInterface::GetAboutResource, 239 &DriveServiceInterface::GetAboutResource,
206 base::Unretained(drive_service_), 240 base::Unretained(drive_service_),
207 base::Bind(&JobScheduler::OnGetAboutResourceJobDone, 241 base::Bind(&JobScheduler::OnGetAboutResourceJobDone,
208 weak_ptr_factory_.GetWeakPtr(), 242 weak_ptr_factory_.GetWeakPtr(),
209 new_job->job_info.job_id, 243 new_job->job_info.job_id,
210 callback)); 244 callback));
211 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 245 new_job->abort_callback = CreateErrorRunCallback(callback);
212 StartJob(new_job); 246 StartJob(new_job);
213 } 247 }
214 248
215 void JobScheduler::GetAppList(const google_apis::AppListCallback& callback) { 249 void JobScheduler::GetAppList(const google_apis::AppListCallback& callback) {
216 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 250 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
217 DCHECK(!callback.is_null()); 251 DCHECK(!callback.is_null());
218 252
219 JobEntry* new_job = CreateNewJob(TYPE_GET_APP_LIST); 253 JobEntry* new_job = CreateNewJob(TYPE_GET_APP_LIST);
220 new_job->task = base::Bind( 254 new_job->task = base::Bind(
221 &DriveServiceInterface::GetAppList, 255 &DriveServiceInterface::GetAppList,
222 base::Unretained(drive_service_), 256 base::Unretained(drive_service_),
223 base::Bind(&JobScheduler::OnGetAppListJobDone, 257 base::Bind(&JobScheduler::OnGetAppListJobDone,
224 weak_ptr_factory_.GetWeakPtr(), 258 weak_ptr_factory_.GetWeakPtr(),
225 new_job->job_info.job_id, 259 new_job->job_info.job_id,
226 callback)); 260 callback));
227 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 261 new_job->abort_callback = CreateErrorRunCallback(callback);
228 StartJob(new_job); 262 StartJob(new_job);
229 } 263 }
230 264
231 void JobScheduler::GetAllResourceList( 265 void JobScheduler::GetAllResourceList(
232 const google_apis::GetResourceListCallback& callback) { 266 const google_apis::GetResourceListCallback& callback) {
233 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 267 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
234 DCHECK(!callback.is_null()); 268 DCHECK(!callback.is_null());
235 269
236 JobEntry* new_job = CreateNewJob(TYPE_GET_ALL_RESOURCE_LIST); 270 JobEntry* new_job = CreateNewJob(TYPE_GET_ALL_RESOURCE_LIST);
237 new_job->task = base::Bind( 271 new_job->task = base::Bind(
238 &DriveServiceInterface::GetAllResourceList, 272 &DriveServiceInterface::GetAllResourceList,
239 base::Unretained(drive_service_), 273 base::Unretained(drive_service_),
240 base::Bind(&JobScheduler::OnGetResourceListJobDone, 274 base::Bind(&JobScheduler::OnGetResourceListJobDone,
241 weak_ptr_factory_.GetWeakPtr(), 275 weak_ptr_factory_.GetWeakPtr(),
242 new_job->job_info.job_id, 276 new_job->job_info.job_id,
243 callback)); 277 callback));
244 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 278 new_job->abort_callback = CreateErrorRunCallback(callback);
245 StartJob(new_job); 279 StartJob(new_job);
246 } 280 }
247 281
248 void JobScheduler::GetResourceListInDirectory( 282 void JobScheduler::GetResourceListInDirectory(
249 const std::string& directory_resource_id, 283 const std::string& directory_resource_id,
250 const google_apis::GetResourceListCallback& callback) { 284 const google_apis::GetResourceListCallback& callback) {
251 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 285 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
252 DCHECK(!callback.is_null()); 286 DCHECK(!callback.is_null());
253 287
254 JobEntry* new_job = CreateNewJob( 288 JobEntry* new_job = CreateNewJob(
255 TYPE_GET_RESOURCE_LIST_IN_DIRECTORY); 289 TYPE_GET_RESOURCE_LIST_IN_DIRECTORY);
256 new_job->task = base::Bind( 290 new_job->task = base::Bind(
257 &DriveServiceInterface::GetResourceListInDirectory, 291 &DriveServiceInterface::GetResourceListInDirectory,
258 base::Unretained(drive_service_), 292 base::Unretained(drive_service_),
259 directory_resource_id, 293 directory_resource_id,
260 base::Bind(&JobScheduler::OnGetResourceListJobDone, 294 base::Bind(&JobScheduler::OnGetResourceListJobDone,
261 weak_ptr_factory_.GetWeakPtr(), 295 weak_ptr_factory_.GetWeakPtr(),
262 new_job->job_info.job_id, 296 new_job->job_info.job_id,
263 callback)); 297 callback));
264 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 298 new_job->abort_callback = CreateErrorRunCallback(callback);
265 StartJob(new_job); 299 StartJob(new_job);
266 } 300 }
267 301
268 void JobScheduler::Search( 302 void JobScheduler::Search(
269 const std::string& search_query, 303 const std::string& search_query,
270 const google_apis::GetResourceListCallback& callback) { 304 const google_apis::GetResourceListCallback& callback) {
271 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 305 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
272 DCHECK(!callback.is_null()); 306 DCHECK(!callback.is_null());
273 307
274 JobEntry* new_job = CreateNewJob(TYPE_SEARCH); 308 JobEntry* new_job = CreateNewJob(TYPE_SEARCH);
275 new_job->task = base::Bind( 309 new_job->task = base::Bind(
276 &DriveServiceInterface::Search, 310 &DriveServiceInterface::Search,
277 base::Unretained(drive_service_), 311 base::Unretained(drive_service_),
278 search_query, 312 search_query,
279 base::Bind(&JobScheduler::OnGetResourceListJobDone, 313 base::Bind(&JobScheduler::OnGetResourceListJobDone,
280 weak_ptr_factory_.GetWeakPtr(), 314 weak_ptr_factory_.GetWeakPtr(),
281 new_job->job_info.job_id, 315 new_job->job_info.job_id,
282 callback)); 316 callback));
283 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 317 new_job->abort_callback = CreateErrorRunCallback(callback);
284 StartJob(new_job); 318 StartJob(new_job);
285 } 319 }
286 320
287 void JobScheduler::GetChangeList( 321 void JobScheduler::GetChangeList(
288 int64 start_changestamp, 322 int64 start_changestamp,
289 const google_apis::GetResourceListCallback& callback) { 323 const google_apis::GetResourceListCallback& callback) {
290 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 324 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
291 DCHECK(!callback.is_null()); 325 DCHECK(!callback.is_null());
292 326
293 JobEntry* new_job = CreateNewJob(TYPE_GET_CHANGE_LIST); 327 JobEntry* new_job = CreateNewJob(TYPE_GET_CHANGE_LIST);
294 new_job->task = base::Bind( 328 new_job->task = base::Bind(
295 &DriveServiceInterface::GetChangeList, 329 &DriveServiceInterface::GetChangeList,
296 base::Unretained(drive_service_), 330 base::Unretained(drive_service_),
297 start_changestamp, 331 start_changestamp,
298 base::Bind(&JobScheduler::OnGetResourceListJobDone, 332 base::Bind(&JobScheduler::OnGetResourceListJobDone,
299 weak_ptr_factory_.GetWeakPtr(), 333 weak_ptr_factory_.GetWeakPtr(),
300 new_job->job_info.job_id, 334 new_job->job_info.job_id,
301 callback)); 335 callback));
302 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 336 new_job->abort_callback = CreateErrorRunCallback(callback);
303 StartJob(new_job); 337 StartJob(new_job);
304 } 338 }
305 339
306 void JobScheduler::GetRemainingChangeList( 340 void JobScheduler::GetRemainingChangeList(
307 const GURL& next_link, 341 const GURL& next_link,
308 const google_apis::GetResourceListCallback& callback) { 342 const google_apis::GetResourceListCallback& callback) {
309 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 343 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
310 DCHECK(!callback.is_null()); 344 DCHECK(!callback.is_null());
311 345
312 JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_CHANGE_LIST); 346 JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_CHANGE_LIST);
313 new_job->task = base::Bind( 347 new_job->task = base::Bind(
314 &DriveServiceInterface::GetRemainingChangeList, 348 &DriveServiceInterface::GetRemainingChangeList,
315 base::Unretained(drive_service_), 349 base::Unretained(drive_service_),
316 next_link, 350 next_link,
317 base::Bind(&JobScheduler::OnGetResourceListJobDone, 351 base::Bind(&JobScheduler::OnGetResourceListJobDone,
318 weak_ptr_factory_.GetWeakPtr(), 352 weak_ptr_factory_.GetWeakPtr(),
319 new_job->job_info.job_id, 353 new_job->job_info.job_id,
320 callback)); 354 callback));
321 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 355 new_job->abort_callback = CreateErrorRunCallback(callback);
322 StartJob(new_job); 356 StartJob(new_job);
323 } 357 }
324 358
325 void JobScheduler::GetRemainingFileList( 359 void JobScheduler::GetRemainingFileList(
326 const GURL& next_link, 360 const GURL& next_link,
327 const google_apis::GetResourceListCallback& callback) { 361 const google_apis::GetResourceListCallback& callback) {
328 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 362 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
329 DCHECK(!callback.is_null()); 363 DCHECK(!callback.is_null());
330 364
331 JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_FILE_LIST); 365 JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_FILE_LIST);
332 new_job->task = base::Bind( 366 new_job->task = base::Bind(
333 &DriveServiceInterface::GetRemainingFileList, 367 &DriveServiceInterface::GetRemainingFileList,
334 base::Unretained(drive_service_), 368 base::Unretained(drive_service_),
335 next_link, 369 next_link,
336 base::Bind(&JobScheduler::OnGetResourceListJobDone, 370 base::Bind(&JobScheduler::OnGetResourceListJobDone,
337 weak_ptr_factory_.GetWeakPtr(), 371 weak_ptr_factory_.GetWeakPtr(),
338 new_job->job_info.job_id, 372 new_job->job_info.job_id,
339 callback)); 373 callback));
340 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 374 new_job->abort_callback = CreateErrorRunCallback(callback);
341 StartJob(new_job); 375 StartJob(new_job);
342 } 376 }
343 377
344 void JobScheduler::GetResourceEntry( 378 void JobScheduler::GetResourceEntry(
345 const std::string& resource_id, 379 const std::string& resource_id,
346 const ClientContext& context, 380 const ClientContext& context,
347 const google_apis::GetResourceEntryCallback& callback) { 381 const google_apis::GetResourceEntryCallback& callback) {
348 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 382 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
349 DCHECK(!callback.is_null()); 383 DCHECK(!callback.is_null());
350 384
351 JobEntry* new_job = CreateNewJob(TYPE_GET_RESOURCE_ENTRY); 385 JobEntry* new_job = CreateNewJob(TYPE_GET_RESOURCE_ENTRY);
352 new_job->context = context; 386 new_job->context = context;
353 new_job->task = base::Bind( 387 new_job->task = base::Bind(
354 &DriveServiceInterface::GetResourceEntry, 388 &DriveServiceInterface::GetResourceEntry,
355 base::Unretained(drive_service_), 389 base::Unretained(drive_service_),
356 resource_id, 390 resource_id,
357 base::Bind(&JobScheduler::OnGetResourceEntryJobDone, 391 base::Bind(&JobScheduler::OnGetResourceEntryJobDone,
358 weak_ptr_factory_.GetWeakPtr(), 392 weak_ptr_factory_.GetWeakPtr(),
359 new_job->job_info.job_id, 393 new_job->job_info.job_id,
360 callback)); 394 callback));
361 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 395 new_job->abort_callback = CreateErrorRunCallback(callback);
362 StartJob(new_job); 396 StartJob(new_job);
363 } 397 }
364 398
365 void JobScheduler::GetShareUrl( 399 void JobScheduler::GetShareUrl(
366 const std::string& resource_id, 400 const std::string& resource_id,
367 const GURL& embed_origin, 401 const GURL& embed_origin,
368 const ClientContext& context, 402 const ClientContext& context,
369 const google_apis::GetShareUrlCallback& callback) { 403 const google_apis::GetShareUrlCallback& callback) {
370 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 404 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
371 DCHECK(!callback.is_null()); 405 DCHECK(!callback.is_null());
372 406
373 JobEntry* new_job = CreateNewJob(TYPE_GET_SHARE_URL); 407 JobEntry* new_job = CreateNewJob(TYPE_GET_SHARE_URL);
374 new_job->context = context; 408 new_job->context = context;
375 new_job->task = base::Bind( 409 new_job->task = base::Bind(
376 &DriveServiceInterface::GetShareUrl, 410 &DriveServiceInterface::GetShareUrl,
377 base::Unretained(drive_service_), 411 base::Unretained(drive_service_),
378 resource_id, 412 resource_id,
379 embed_origin, 413 embed_origin,
380 base::Bind(&JobScheduler::OnGetShareUrlJobDone, 414 base::Bind(&JobScheduler::OnGetShareUrlJobDone,
381 weak_ptr_factory_.GetWeakPtr(), 415 weak_ptr_factory_.GetWeakPtr(),
382 new_job->job_info.job_id, 416 new_job->job_info.job_id,
383 callback)); 417 callback));
384 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 418 new_job->abort_callback = CreateErrorRunCallback(callback);
385 StartJob(new_job); 419 StartJob(new_job);
386 } 420 }
387 421
388 void JobScheduler::DeleteResource( 422 void JobScheduler::DeleteResource(
389 const std::string& resource_id, 423 const std::string& resource_id,
390 const ClientContext& context, 424 const ClientContext& context,
391 const google_apis::EntryActionCallback& callback) { 425 const google_apis::EntryActionCallback& callback) {
392 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 426 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
393 DCHECK(!callback.is_null()); 427 DCHECK(!callback.is_null());
394 428
(...skipping 26 matching lines...) Expand all
421 &DriveServiceInterface::CopyResource, 455 &DriveServiceInterface::CopyResource,
422 base::Unretained(drive_service_), 456 base::Unretained(drive_service_),
423 resource_id, 457 resource_id,
424 parent_resource_id, 458 parent_resource_id,
425 new_title, 459 new_title,
426 last_modified, 460 last_modified,
427 base::Bind(&JobScheduler::OnGetResourceEntryJobDone, 461 base::Bind(&JobScheduler::OnGetResourceEntryJobDone,
428 weak_ptr_factory_.GetWeakPtr(), 462 weak_ptr_factory_.GetWeakPtr(),
429 new_job->job_info.job_id, 463 new_job->job_info.job_id,
430 callback)); 464 callback));
431 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 465 new_job->abort_callback = CreateErrorRunCallback(callback);
432 StartJob(new_job); 466 StartJob(new_job);
433 } 467 }
434 468
435 void JobScheduler::CopyHostedDocument( 469 void JobScheduler::CopyHostedDocument(
436 const std::string& resource_id, 470 const std::string& resource_id,
437 const std::string& new_title, 471 const std::string& new_title,
438 const google_apis::GetResourceEntryCallback& callback) { 472 const google_apis::GetResourceEntryCallback& callback) {
439 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 473 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
440 DCHECK(!callback.is_null()); 474 DCHECK(!callback.is_null());
441 475
442 JobEntry* new_job = CreateNewJob(TYPE_COPY_HOSTED_DOCUMENT); 476 JobEntry* new_job = CreateNewJob(TYPE_COPY_HOSTED_DOCUMENT);
443 new_job->task = base::Bind( 477 new_job->task = base::Bind(
444 &DriveServiceInterface::CopyHostedDocument, 478 &DriveServiceInterface::CopyHostedDocument,
445 base::Unretained(drive_service_), 479 base::Unretained(drive_service_),
446 resource_id, 480 resource_id,
447 new_title, 481 new_title,
448 base::Bind(&JobScheduler::OnGetResourceEntryJobDone, 482 base::Bind(&JobScheduler::OnGetResourceEntryJobDone,
449 weak_ptr_factory_.GetWeakPtr(), 483 weak_ptr_factory_.GetWeakPtr(),
450 new_job->job_info.job_id, 484 new_job->job_info.job_id,
451 callback)); 485 callback));
452 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 486 new_job->abort_callback = CreateErrorRunCallback(callback);
453 StartJob(new_job); 487 StartJob(new_job);
454 } 488 }
455 489
456 void JobScheduler::MoveResource( 490 void JobScheduler::MoveResource(
457 const std::string& resource_id, 491 const std::string& resource_id,
458 const std::string& parent_resource_id, 492 const std::string& parent_resource_id,
459 const std::string& new_title, 493 const std::string& new_title,
460 const base::Time& last_modified, 494 const base::Time& last_modified,
461 const google_apis::GetResourceEntryCallback& callback) { 495 const google_apis::GetResourceEntryCallback& callback) {
462 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 496 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
463 DCHECK(!callback.is_null()); 497 DCHECK(!callback.is_null());
464 498
465 JobEntry* new_job = CreateNewJob(TYPE_MOVE_RESOURCE); 499 JobEntry* new_job = CreateNewJob(TYPE_MOVE_RESOURCE);
466 new_job->task = base::Bind( 500 new_job->task = base::Bind(
467 &DriveServiceInterface::MoveResource, 501 &DriveServiceInterface::MoveResource,
468 base::Unretained(drive_service_), 502 base::Unretained(drive_service_),
469 resource_id, 503 resource_id,
470 parent_resource_id, 504 parent_resource_id,
471 new_title, 505 new_title,
472 last_modified, 506 last_modified,
473 base::Bind(&JobScheduler::OnGetResourceEntryJobDone, 507 base::Bind(&JobScheduler::OnGetResourceEntryJobDone,
474 weak_ptr_factory_.GetWeakPtr(), 508 weak_ptr_factory_.GetWeakPtr(),
475 new_job->job_info.job_id, 509 new_job->job_info.job_id,
476 callback)); 510 callback));
477 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 511 new_job->abort_callback = CreateErrorRunCallback(callback);
478 StartJob(new_job); 512 StartJob(new_job);
479 } 513 }
480 514
481 void JobScheduler::RenameResource( 515 void JobScheduler::RenameResource(
482 const std::string& resource_id, 516 const std::string& resource_id,
483 const std::string& new_title, 517 const std::string& new_title,
484 const google_apis::EntryActionCallback& callback) { 518 const google_apis::EntryActionCallback& callback) {
485 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 519 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
486 DCHECK(!callback.is_null()); 520 DCHECK(!callback.is_null());
487 521
(...skipping 23 matching lines...) Expand all
511 new_job->task = base::Bind( 545 new_job->task = base::Bind(
512 &DriveServiceInterface::TouchResource, 546 &DriveServiceInterface::TouchResource,
513 base::Unretained(drive_service_), 547 base::Unretained(drive_service_),
514 resource_id, 548 resource_id,
515 modified_date, 549 modified_date,
516 last_viewed_by_me_date, 550 last_viewed_by_me_date,
517 base::Bind(&JobScheduler::OnGetResourceEntryJobDone, 551 base::Bind(&JobScheduler::OnGetResourceEntryJobDone,
518 weak_ptr_factory_.GetWeakPtr(), 552 weak_ptr_factory_.GetWeakPtr(),
519 new_job->job_info.job_id, 553 new_job->job_info.job_id,
520 callback)); 554 callback));
521 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 555 new_job->abort_callback = CreateErrorRunCallback(callback);
522 StartJob(new_job); 556 StartJob(new_job);
523 } 557 }
524 558
525 void JobScheduler::AddResourceToDirectory( 559 void JobScheduler::AddResourceToDirectory(
526 const std::string& parent_resource_id, 560 const std::string& parent_resource_id,
527 const std::string& resource_id, 561 const std::string& resource_id,
528 const google_apis::EntryActionCallback& callback) { 562 const google_apis::EntryActionCallback& callback) {
529 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 563 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
530 DCHECK(!callback.is_null()); 564 DCHECK(!callback.is_null());
531 565
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 JobEntry* new_job = CreateNewJob(TYPE_ADD_NEW_DIRECTORY); 608 JobEntry* new_job = CreateNewJob(TYPE_ADD_NEW_DIRECTORY);
575 new_job->task = base::Bind( 609 new_job->task = base::Bind(
576 &DriveServiceInterface::AddNewDirectory, 610 &DriveServiceInterface::AddNewDirectory,
577 base::Unretained(drive_service_), 611 base::Unretained(drive_service_),
578 parent_resource_id, 612 parent_resource_id,
579 directory_title, 613 directory_title,
580 base::Bind(&JobScheduler::OnGetResourceEntryJobDone, 614 base::Bind(&JobScheduler::OnGetResourceEntryJobDone,
581 weak_ptr_factory_.GetWeakPtr(), 615 weak_ptr_factory_.GetWeakPtr(),
582 new_job->job_info.job_id, 616 new_job->job_info.job_id,
583 callback)); 617 callback));
584 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 618 new_job->abort_callback = CreateErrorRunCallback(callback);
585 StartJob(new_job); 619 StartJob(new_job);
586 } 620 }
587 621
588 JobID JobScheduler::DownloadFile( 622 JobID JobScheduler::DownloadFile(
589 const base::FilePath& virtual_path, 623 const base::FilePath& virtual_path,
590 int64 expected_file_size, 624 int64 expected_file_size,
591 const base::FilePath& local_cache_path, 625 const base::FilePath& local_cache_path,
592 const std::string& resource_id, 626 const std::string& resource_id,
593 const ClientContext& context, 627 const ClientContext& context,
594 const google_apis::DownloadActionCallback& download_action_callback, 628 const google_apis::DownloadActionCallback& download_action_callback,
(...skipping 10 matching lines...) Expand all
605 local_cache_path, 639 local_cache_path,
606 resource_id, 640 resource_id,
607 base::Bind(&JobScheduler::OnDownloadActionJobDone, 641 base::Bind(&JobScheduler::OnDownloadActionJobDone,
608 weak_ptr_factory_.GetWeakPtr(), 642 weak_ptr_factory_.GetWeakPtr(),
609 new_job->job_info.job_id, 643 new_job->job_info.job_id,
610 download_action_callback), 644 download_action_callback),
611 get_content_callback, 645 get_content_callback,
612 base::Bind(&JobScheduler::UpdateProgress, 646 base::Bind(&JobScheduler::UpdateProgress,
613 weak_ptr_factory_.GetWeakPtr(), 647 weak_ptr_factory_.GetWeakPtr(),
614 new_job->job_info.job_id)); 648 new_job->job_info.job_id));
615 new_job->abort_callback = 649 new_job->abort_callback = CreateErrorRunCallback(download_action_callback);
616 google_apis::CreateErrorRunCallback(download_action_callback);
617 StartJob(new_job); 650 StartJob(new_job);
618 return new_job->job_info.job_id; 651 return new_job->job_info.job_id;
619 } 652 }
620 653
621 void JobScheduler::UploadNewFile( 654 void JobScheduler::UploadNewFile(
622 const std::string& parent_resource_id, 655 const std::string& parent_resource_id,
623 const base::FilePath& drive_file_path, 656 const base::FilePath& drive_file_path,
624 const base::FilePath& local_file_path, 657 const base::FilePath& local_file_path,
625 const std::string& title, 658 const std::string& title,
626 const std::string& content_type, 659 const std::string& content_type,
(...skipping 17 matching lines...) Expand all
644 677
645 params.callback = base::Bind(&JobScheduler::OnUploadCompletionJobDone, 678 params.callback = base::Bind(&JobScheduler::OnUploadCompletionJobDone,
646 weak_ptr_factory_.GetWeakPtr(), 679 weak_ptr_factory_.GetWeakPtr(),
647 new_job->job_info.job_id, 680 new_job->job_info.job_id,
648 resume_params, 681 resume_params,
649 callback); 682 callback);
650 params.progress_callback = base::Bind(&JobScheduler::UpdateProgress, 683 params.progress_callback = base::Bind(&JobScheduler::UpdateProgress,
651 weak_ptr_factory_.GetWeakPtr(), 684 weak_ptr_factory_.GetWeakPtr(),
652 new_job->job_info.job_id); 685 new_job->job_info.job_id);
653 new_job->task = base::Bind(&RunUploadNewFile, uploader_.get(), params); 686 new_job->task = base::Bind(&RunUploadNewFile, uploader_.get(), params);
654 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 687 new_job->abort_callback = CreateErrorRunCallback(callback);
655 StartJob(new_job); 688 StartJob(new_job);
656 } 689 }
657 690
658 void JobScheduler::UploadExistingFile( 691 void JobScheduler::UploadExistingFile(
659 const std::string& resource_id, 692 const std::string& resource_id,
660 const base::FilePath& drive_file_path, 693 const base::FilePath& drive_file_path,
661 const base::FilePath& local_file_path, 694 const base::FilePath& local_file_path,
662 const std::string& content_type, 695 const std::string& content_type,
663 const std::string& etag, 696 const std::string& etag,
664 const ClientContext& context, 697 const ClientContext& context,
(...skipping 16 matching lines...) Expand all
681 714
682 params.callback = base::Bind(&JobScheduler::OnUploadCompletionJobDone, 715 params.callback = base::Bind(&JobScheduler::OnUploadCompletionJobDone,
683 weak_ptr_factory_.GetWeakPtr(), 716 weak_ptr_factory_.GetWeakPtr(),
684 new_job->job_info.job_id, 717 new_job->job_info.job_id,
685 resume_params, 718 resume_params,
686 callback); 719 callback);
687 params.progress_callback = base::Bind(&JobScheduler::UpdateProgress, 720 params.progress_callback = base::Bind(&JobScheduler::UpdateProgress,
688 weak_ptr_factory_.GetWeakPtr(), 721 weak_ptr_factory_.GetWeakPtr(),
689 new_job->job_info.job_id); 722 new_job->job_info.job_id);
690 new_job->task = base::Bind(&RunUploadExistingFile, uploader_.get(), params); 723 new_job->task = base::Bind(&RunUploadExistingFile, uploader_.get(), params);
691 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 724 new_job->abort_callback = CreateErrorRunCallback(callback);
692 StartJob(new_job); 725 StartJob(new_job);
693 } 726 }
694 727
695 void JobScheduler::CreateFile( 728 void JobScheduler::CreateFile(
696 const std::string& parent_resource_id, 729 const std::string& parent_resource_id,
697 const base::FilePath& drive_file_path, 730 const base::FilePath& drive_file_path,
698 const std::string& title, 731 const std::string& title,
699 const std::string& content_type, 732 const std::string& content_type,
700 const ClientContext& context, 733 const ClientContext& context,
701 const google_apis::GetResourceEntryCallback& callback) { 734 const google_apis::GetResourceEntryCallback& callback) {
(...skipping 16 matching lines...) Expand all
718 resume_params.content_type = params.content_type; 751 resume_params.content_type = params.content_type;
719 752
720 params.callback = base::Bind(&JobScheduler::OnUploadCompletionJobDone, 753 params.callback = base::Bind(&JobScheduler::OnUploadCompletionJobDone,
721 weak_ptr_factory_.GetWeakPtr(), 754 weak_ptr_factory_.GetWeakPtr(),
722 new_job->job_info.job_id, 755 new_job->job_info.job_id,
723 resume_params, 756 resume_params,
724 callback); 757 callback);
725 params.progress_callback = google_apis::ProgressCallback(); 758 params.progress_callback = google_apis::ProgressCallback();
726 759
727 new_job->task = base::Bind(&RunUploadNewFile, uploader_.get(), params); 760 new_job->task = base::Bind(&RunUploadNewFile, uploader_.get(), params);
728 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 761 new_job->abort_callback = CreateErrorRunCallback(callback);
729 StartJob(new_job); 762 StartJob(new_job);
730 } 763 }
731 764
732 void JobScheduler::GetResourceListInDirectoryByWapi( 765 void JobScheduler::GetResourceListInDirectoryByWapi(
733 const std::string& directory_resource_id, 766 const std::string& directory_resource_id,
734 const google_apis::GetResourceListCallback& callback) { 767 const google_apis::GetResourceListCallback& callback) {
735 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 768 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
736 DCHECK(!callback.is_null()); 769 DCHECK(!callback.is_null());
737 770
738 JobEntry* new_job = CreateNewJob( 771 JobEntry* new_job = CreateNewJob(
739 TYPE_GET_RESOURCE_LIST_IN_DIRECTORY_BY_WAPI); 772 TYPE_GET_RESOURCE_LIST_IN_DIRECTORY_BY_WAPI);
740 new_job->task = base::Bind( 773 new_job->task = base::Bind(
741 &DriveServiceInterface::GetResourceListInDirectoryByWapi, 774 &DriveServiceInterface::GetResourceListInDirectoryByWapi,
742 base::Unretained(drive_service_), 775 base::Unretained(drive_service_),
743 directory_resource_id, 776 directory_resource_id,
744 base::Bind(&JobScheduler::OnGetResourceListJobDone, 777 base::Bind(&JobScheduler::OnGetResourceListJobDone,
745 weak_ptr_factory_.GetWeakPtr(), 778 weak_ptr_factory_.GetWeakPtr(),
746 new_job->job_info.job_id, 779 new_job->job_info.job_id,
747 callback)); 780 callback));
748 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 781 new_job->abort_callback = CreateErrorRunCallback(callback);
749 StartJob(new_job); 782 StartJob(new_job);
750 } 783 }
751 784
752 void JobScheduler::GetRemainingResourceList( 785 void JobScheduler::GetRemainingResourceList(
753 const GURL& next_link, 786 const GURL& next_link,
754 const google_apis::GetResourceListCallback& callback) { 787 const google_apis::GetResourceListCallback& callback) {
755 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 788 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
756 DCHECK(!callback.is_null()); 789 DCHECK(!callback.is_null());
757 790
758 JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_RESOURCE_LIST); 791 JobEntry* new_job = CreateNewJob(TYPE_GET_REMAINING_RESOURCE_LIST);
759 new_job->task = base::Bind( 792 new_job->task = base::Bind(
760 &DriveServiceInterface::GetRemainingResourceList, 793 &DriveServiceInterface::GetRemainingResourceList,
761 base::Unretained(drive_service_), 794 base::Unretained(drive_service_),
762 next_link, 795 next_link,
763 base::Bind(&JobScheduler::OnGetResourceListJobDone, 796 base::Bind(&JobScheduler::OnGetResourceListJobDone,
764 weak_ptr_factory_.GetWeakPtr(), 797 weak_ptr_factory_.GetWeakPtr(),
765 new_job->job_info.job_id, 798 new_job->job_info.job_id,
766 callback)); 799 callback));
767 new_job->abort_callback = google_apis::CreateErrorRunCallback(callback); 800 new_job->abort_callback = CreateErrorRunCallback(callback);
768 StartJob(new_job); 801 StartJob(new_job);
769 } 802 }
770 803
771 JobScheduler::JobEntry* JobScheduler::CreateNewJob(JobType type) { 804 JobScheduler::JobEntry* JobScheduler::CreateNewJob(JobType type) {
772 JobEntry* job = new JobEntry(type); 805 JobEntry* job = new JobEntry(type);
773 job->job_info.job_id = job_map_.Add(job); // Takes the ownership of |job|. 806 job->job_info.job_id = job_map_.Add(job); // Takes the ownership of |job|.
774 return job; 807 return job;
775 } 808 }
776 809
777 void JobScheduler::StartJob(JobEntry* job) { 810 void JobScheduler::StartJob(JobEntry* job) {
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
1199 case FILE_QUEUE: 1232 case FILE_QUEUE:
1200 return "FILE_QUEUE"; 1233 return "FILE_QUEUE";
1201 case NUM_QUEUES: 1234 case NUM_QUEUES:
1202 break; // This value is just a sentinel. Should never be used. 1235 break; // This value is just a sentinel. Should never be used.
1203 } 1236 }
1204 NOTREACHED(); 1237 NOTREACHED();
1205 return ""; 1238 return "";
1206 } 1239 }
1207 1240
1208 } // namespace drive 1241 } // namespace drive
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/google_apis/task_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698