| 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/google_apis/drive_api_service.h" | 5 #include "chrome/browser/google_apis/drive_api_service.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 return HasRefreshToken(); | 267 return HasRefreshToken(); |
| 268 } | 268 } |
| 269 | 269 |
| 270 void DriveAPIService::CancelAll() { | 270 void DriveAPIService::CancelAll() { |
| 271 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 271 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 272 runner_->CancelAll(); | 272 runner_->CancelAll(); |
| 273 } | 273 } |
| 274 | 274 |
| 275 bool DriveAPIService::CancelForFilePath(const base::FilePath& file_path) { | 275 bool DriveAPIService::CancelForFilePath(const base::FilePath& file_path) { |
| 276 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 276 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 277 return operation_registry()->CancelForFilePath(file_path); | 277 return runner_->operation_registry()->CancelForFilePath(file_path); |
| 278 } | 278 } |
| 279 | 279 |
| 280 std::string DriveAPIService::GetRootResourceId() const { | 280 std::string DriveAPIService::GetRootResourceId() const { |
| 281 return kDriveApiRootDirectoryResourceId; | 281 return kDriveApiRootDirectoryResourceId; |
| 282 } | 282 } |
| 283 | 283 |
| 284 void DriveAPIService::GetAllResourceList( | 284 void DriveAPIService::GetAllResourceList( |
| 285 const GetResourceListCallback& callback) { | 285 const GetResourceListCallback& callback) { |
| 286 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 286 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 287 DCHECK(!callback.is_null()); | 287 DCHECK(!callback.is_null()); |
| 288 | 288 |
| 289 // The simplest way to fetch the all resources list looks files.list method, | 289 // The simplest way to fetch the all resources list looks files.list method, |
| 290 // but it seems impossible to know the returned list's changestamp. | 290 // but it seems impossible to know the returned list's changestamp. |
| 291 // Thus, instead, we use changes.list method with includeDeleted=false here. | 291 // Thus, instead, we use changes.list method with includeDeleted=false here. |
| 292 // The returned list should contain only resources currently existing. | 292 // The returned list should contain only resources currently existing. |
| 293 runner_->StartOperationWithRetry( | 293 runner_->StartOperationWithRetry( |
| 294 new GetChangelistOperation( | 294 new GetChangelistOperation( |
| 295 operation_registry(), | 295 runner_.get(), |
| 296 url_request_context_getter_, | 296 url_request_context_getter_, |
| 297 url_generator_, | 297 url_generator_, |
| 298 false, // include deleted | 298 false, // include deleted |
| 299 0, | 299 0, |
| 300 kMaxNumFilesResourcePerRequest, | 300 kMaxNumFilesResourcePerRequest, |
| 301 base::Bind(&ParseResourceListOnBlockingPoolAndRun, callback))); | 301 base::Bind(&ParseResourceListOnBlockingPoolAndRun, callback))); |
| 302 } | 302 } |
| 303 | 303 |
| 304 void DriveAPIService::GetResourceListInDirectory( | 304 void DriveAPIService::GetResourceListInDirectory( |
| 305 const std::string& directory_resource_id, | 305 const std::string& directory_resource_id, |
| 306 const GetResourceListCallback& callback) { | 306 const GetResourceListCallback& callback) { |
| 307 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 307 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 308 DCHECK(!directory_resource_id.empty()); | 308 DCHECK(!directory_resource_id.empty()); |
| 309 DCHECK(!callback.is_null()); | 309 DCHECK(!callback.is_null()); |
| 310 | 310 |
| 311 // Because children.list method on Drive API v2 returns only the list of | 311 // Because children.list method on Drive API v2 returns only the list of |
| 312 // children's references, but we need all file resource list. | 312 // children's references, but we need all file resource list. |
| 313 // So, here we use files.list method instead, with setting parents query. | 313 // So, here we use files.list method instead, with setting parents query. |
| 314 // After the migration from GData WAPI to Drive API v2, we should clean the | 314 // After the migration from GData WAPI to Drive API v2, we should clean the |
| 315 // code up by moving the resposibility to include "parents" in the query | 315 // code up by moving the resposibility to include "parents" in the query |
| 316 // to client side. | 316 // to client side. |
| 317 // We aren't interested in files in trash in this context, neither. | 317 // We aren't interested in files in trash in this context, neither. |
| 318 runner_->StartOperationWithRetry( | 318 runner_->StartOperationWithRetry( |
| 319 new GetFilelistOperation( | 319 new GetFilelistOperation( |
| 320 operation_registry(), | 320 runner_.get(), |
| 321 url_request_context_getter_, | 321 url_request_context_getter_, |
| 322 url_generator_, | 322 url_generator_, |
| 323 base::StringPrintf( | 323 base::StringPrintf( |
| 324 "'%s' in parents and trashed = false", | 324 "'%s' in parents and trashed = false", |
| 325 drive::util::EscapeQueryStringValue( | 325 drive::util::EscapeQueryStringValue( |
| 326 directory_resource_id).c_str()), | 326 directory_resource_id).c_str()), |
| 327 kMaxNumFilesResourcePerRequest, | 327 kMaxNumFilesResourcePerRequest, |
| 328 base::Bind(&ParseResourceListOnBlockingPoolAndRun, callback))); | 328 base::Bind(&ParseResourceListOnBlockingPoolAndRun, callback))); |
| 329 } | 329 } |
| 330 | 330 |
| 331 void DriveAPIService::Search(const std::string& search_query, | 331 void DriveAPIService::Search(const std::string& search_query, |
| 332 const GetResourceListCallback& callback) { | 332 const GetResourceListCallback& callback) { |
| 333 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 333 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 334 DCHECK(!search_query.empty()); | 334 DCHECK(!search_query.empty()); |
| 335 DCHECK(!callback.is_null()); | 335 DCHECK(!callback.is_null()); |
| 336 | 336 |
| 337 runner_->StartOperationWithRetry( | 337 runner_->StartOperationWithRetry( |
| 338 new GetFilelistOperation( | 338 new GetFilelistOperation( |
| 339 operation_registry(), | 339 runner_.get(), |
| 340 url_request_context_getter_, | 340 url_request_context_getter_, |
| 341 url_generator_, | 341 url_generator_, |
| 342 drive::util::TranslateQuery(search_query), | 342 drive::util::TranslateQuery(search_query), |
| 343 kMaxNumFilesResourcePerRequestForSearch, | 343 kMaxNumFilesResourcePerRequestForSearch, |
| 344 base::Bind(&ParseResourceListOnBlockingPoolAndRun, callback))); | 344 base::Bind(&ParseResourceListOnBlockingPoolAndRun, callback))); |
| 345 } | 345 } |
| 346 | 346 |
| 347 void DriveAPIService::SearchByTitle( | 347 void DriveAPIService::SearchByTitle( |
| 348 const std::string& title, | 348 const std::string& title, |
| 349 const std::string& directory_resource_id, | 349 const std::string& directory_resource_id, |
| 350 const GetResourceListCallback& callback) { | 350 const GetResourceListCallback& callback) { |
| 351 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 351 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 352 DCHECK(!title.empty()); | 352 DCHECK(!title.empty()); |
| 353 DCHECK(!callback.is_null()); | 353 DCHECK(!callback.is_null()); |
| 354 | 354 |
| 355 std::string query; | 355 std::string query; |
| 356 base::StringAppendF(&query, "title = '%s'", | 356 base::StringAppendF(&query, "title = '%s'", |
| 357 drive::util::EscapeQueryStringValue(title).c_str()); | 357 drive::util::EscapeQueryStringValue(title).c_str()); |
| 358 if (!directory_resource_id.empty()) { | 358 if (!directory_resource_id.empty()) { |
| 359 base::StringAppendF( | 359 base::StringAppendF( |
| 360 &query, " and '%s' in parents", | 360 &query, " and '%s' in parents", |
| 361 drive::util::EscapeQueryStringValue(directory_resource_id).c_str()); | 361 drive::util::EscapeQueryStringValue(directory_resource_id).c_str()); |
| 362 } | 362 } |
| 363 query += " and trashed = false"; | 363 query += " and trashed = false"; |
| 364 | 364 |
| 365 runner_->StartOperationWithRetry( | 365 runner_->StartOperationWithRetry( |
| 366 new GetFilelistOperation( | 366 new GetFilelistOperation( |
| 367 operation_registry(), | 367 runner_.get(), |
| 368 url_request_context_getter_, | 368 url_request_context_getter_, |
| 369 url_generator_, | 369 url_generator_, |
| 370 query, | 370 query, |
| 371 kMaxNumFilesResourcePerRequest, | 371 kMaxNumFilesResourcePerRequest, |
| 372 base::Bind(&ParseResourceListOnBlockingPoolAndRun, callback))); | 372 base::Bind(&ParseResourceListOnBlockingPoolAndRun, callback))); |
| 373 } | 373 } |
| 374 | 374 |
| 375 void DriveAPIService::GetChangeList(int64 start_changestamp, | 375 void DriveAPIService::GetChangeList(int64 start_changestamp, |
| 376 const GetResourceListCallback& callback) { | 376 const GetResourceListCallback& callback) { |
| 377 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 377 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 378 DCHECK(!callback.is_null()); | 378 DCHECK(!callback.is_null()); |
| 379 | 379 |
| 380 runner_->StartOperationWithRetry( | 380 runner_->StartOperationWithRetry( |
| 381 new GetChangelistOperation( | 381 new GetChangelistOperation( |
| 382 operation_registry(), | 382 runner_.get(), |
| 383 url_request_context_getter_, | 383 url_request_context_getter_, |
| 384 url_generator_, | 384 url_generator_, |
| 385 true, // include deleted | 385 true, // include deleted |
| 386 start_changestamp, | 386 start_changestamp, |
| 387 kMaxNumFilesResourcePerRequest, | 387 kMaxNumFilesResourcePerRequest, |
| 388 base::Bind(&ParseResourceListOnBlockingPoolAndRun, callback))); | 388 base::Bind(&ParseResourceListOnBlockingPoolAndRun, callback))); |
| 389 } | 389 } |
| 390 | 390 |
| 391 void DriveAPIService::ContinueGetResourceList( | 391 void DriveAPIService::ContinueGetResourceList( |
| 392 const GURL& override_url, | 392 const GURL& override_url, |
| 393 const GetResourceListCallback& callback) { | 393 const GetResourceListCallback& callback) { |
| 394 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 394 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 395 DCHECK(!callback.is_null()); | 395 DCHECK(!callback.is_null()); |
| 396 | 396 |
| 397 runner_->StartOperationWithRetry( | 397 runner_->StartOperationWithRetry( |
| 398 new drive::ContinueGetFileListOperation( | 398 new drive::ContinueGetFileListOperation( |
| 399 operation_registry(), | 399 runner_.get(), |
| 400 url_request_context_getter_, | 400 url_request_context_getter_, |
| 401 override_url, | 401 override_url, |
| 402 base::Bind(&ParseResourceListOnBlockingPoolAndRun, callback))); | 402 base::Bind(&ParseResourceListOnBlockingPoolAndRun, callback))); |
| 403 } | 403 } |
| 404 | 404 |
| 405 void DriveAPIService::GetResourceEntry( | 405 void DriveAPIService::GetResourceEntry( |
| 406 const std::string& resource_id, | 406 const std::string& resource_id, |
| 407 const GetResourceEntryCallback& callback) { | 407 const GetResourceEntryCallback& callback) { |
| 408 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 408 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 409 DCHECK(!callback.is_null()); | 409 DCHECK(!callback.is_null()); |
| 410 | 410 |
| 411 runner_->StartOperationWithRetry(new GetFileOperation( | 411 runner_->StartOperationWithRetry(new GetFileOperation( |
| 412 operation_registry(), | 412 runner_.get(), |
| 413 url_request_context_getter_, | 413 url_request_context_getter_, |
| 414 url_generator_, | 414 url_generator_, |
| 415 resource_id, | 415 resource_id, |
| 416 base::Bind(&ParseResourceEntryAndRun, callback))); | 416 base::Bind(&ParseResourceEntryAndRun, callback))); |
| 417 } | 417 } |
| 418 | 418 |
| 419 void DriveAPIService::GetAboutResource( | 419 void DriveAPIService::GetAboutResource( |
| 420 const GetAboutResourceCallback& callback) { | 420 const GetAboutResourceCallback& callback) { |
| 421 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 421 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 422 DCHECK(!callback.is_null()); | 422 DCHECK(!callback.is_null()); |
| 423 | 423 |
| 424 runner_->StartOperationWithRetry( | 424 runner_->StartOperationWithRetry( |
| 425 new GetAboutOperation( | 425 new GetAboutOperation( |
| 426 operation_registry(), | 426 runner_.get(), |
| 427 url_request_context_getter_, | 427 url_request_context_getter_, |
| 428 url_generator_, | 428 url_generator_, |
| 429 callback)); | 429 callback)); |
| 430 } | 430 } |
| 431 | 431 |
| 432 void DriveAPIService::GetAppList(const GetAppListCallback& callback) { | 432 void DriveAPIService::GetAppList(const GetAppListCallback& callback) { |
| 433 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 433 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 434 DCHECK(!callback.is_null()); | 434 DCHECK(!callback.is_null()); |
| 435 | 435 |
| 436 runner_->StartOperationWithRetry(new GetApplistOperation( | 436 runner_->StartOperationWithRetry(new GetApplistOperation( |
| 437 operation_registry(), | 437 runner_.get(), |
| 438 url_request_context_getter_, | 438 url_request_context_getter_, |
| 439 url_generator_, | 439 url_generator_, |
| 440 base::Bind(&ParseAppListAndRun, callback))); | 440 base::Bind(&ParseAppListAndRun, callback))); |
| 441 } | 441 } |
| 442 | 442 |
| 443 void DriveAPIService::DownloadFile( | 443 void DriveAPIService::DownloadFile( |
| 444 const base::FilePath& virtual_path, | 444 const base::FilePath& virtual_path, |
| 445 const base::FilePath& local_cache_path, | 445 const base::FilePath& local_cache_path, |
| 446 const GURL& download_url, | 446 const GURL& download_url, |
| 447 const DownloadActionCallback& download_action_callback, | 447 const DownloadActionCallback& download_action_callback, |
| 448 const GetContentCallback& get_content_callback, | 448 const GetContentCallback& get_content_callback, |
| 449 const ProgressCallback& progress_callback) { | 449 const ProgressCallback& progress_callback) { |
| 450 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 450 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 451 DCHECK(!download_action_callback.is_null()); | 451 DCHECK(!download_action_callback.is_null()); |
| 452 // get_content_callback may be null. | 452 // get_content_callback may be null. |
| 453 | 453 |
| 454 runner_->StartOperationWithRetry( | 454 runner_->StartOperationWithRetry( |
| 455 new DownloadFileOperation(operation_registry(), | 455 new DownloadFileOperation(runner_.get(), |
| 456 url_request_context_getter_, | 456 url_request_context_getter_, |
| 457 download_action_callback, | 457 download_action_callback, |
| 458 get_content_callback, | 458 get_content_callback, |
| 459 progress_callback, | 459 progress_callback, |
| 460 download_url, | 460 download_url, |
| 461 virtual_path, | 461 virtual_path, |
| 462 local_cache_path)); | 462 local_cache_path)); |
| 463 } | 463 } |
| 464 | 464 |
| 465 void DriveAPIService::DeleteResource( | 465 void DriveAPIService::DeleteResource( |
| 466 const std::string& resource_id, | 466 const std::string& resource_id, |
| 467 const std::string& etag, | 467 const std::string& etag, |
| 468 const EntryActionCallback& callback) { | 468 const EntryActionCallback& callback) { |
| 469 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 469 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 470 DCHECK(!callback.is_null()); | 470 DCHECK(!callback.is_null()); |
| 471 | 471 |
| 472 runner_->StartOperationWithRetry(new drive::TrashResourceOperation( | 472 runner_->StartOperationWithRetry(new drive::TrashResourceOperation( |
| 473 operation_registry(), | 473 runner_.get(), |
| 474 url_request_context_getter_, | 474 url_request_context_getter_, |
| 475 url_generator_, | 475 url_generator_, |
| 476 resource_id, | 476 resource_id, |
| 477 callback)); | 477 callback)); |
| 478 } | 478 } |
| 479 | 479 |
| 480 void DriveAPIService::AddNewDirectory( | 480 void DriveAPIService::AddNewDirectory( |
| 481 const std::string& parent_resource_id, | 481 const std::string& parent_resource_id, |
| 482 const std::string& directory_name, | 482 const std::string& directory_name, |
| 483 const GetResourceEntryCallback& callback) { | 483 const GetResourceEntryCallback& callback) { |
| 484 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 484 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 485 DCHECK(!callback.is_null()); | 485 DCHECK(!callback.is_null()); |
| 486 | 486 |
| 487 runner_->StartOperationWithRetry( | 487 runner_->StartOperationWithRetry( |
| 488 new drive::CreateDirectoryOperation( | 488 new drive::CreateDirectoryOperation( |
| 489 operation_registry(), | 489 runner_.get(), |
| 490 url_request_context_getter_, | 490 url_request_context_getter_, |
| 491 url_generator_, | 491 url_generator_, |
| 492 parent_resource_id, | 492 parent_resource_id, |
| 493 directory_name, | 493 directory_name, |
| 494 base::Bind(&ParseResourceEntryAndRun, callback))); | 494 base::Bind(&ParseResourceEntryAndRun, callback))); |
| 495 } | 495 } |
| 496 | 496 |
| 497 void DriveAPIService::CopyResource( | 497 void DriveAPIService::CopyResource( |
| 498 const std::string& resource_id, | 498 const std::string& resource_id, |
| 499 const std::string& parent_resource_id, | 499 const std::string& parent_resource_id, |
| 500 const std::string& new_name, | 500 const std::string& new_name, |
| 501 const GetResourceEntryCallback& callback) { | 501 const GetResourceEntryCallback& callback) { |
| 502 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 502 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 503 DCHECK(!callback.is_null()); | 503 DCHECK(!callback.is_null()); |
| 504 | 504 |
| 505 runner_->StartOperationWithRetry( | 505 runner_->StartOperationWithRetry( |
| 506 new drive::CopyResourceOperation( | 506 new drive::CopyResourceOperation( |
| 507 operation_registry(), | 507 runner_.get(), |
| 508 url_request_context_getter_, | 508 url_request_context_getter_, |
| 509 url_generator_, | 509 url_generator_, |
| 510 resource_id, | 510 resource_id, |
| 511 parent_resource_id, | 511 parent_resource_id, |
| 512 new_name, | 512 new_name, |
| 513 base::Bind(&ParseResourceEntryAndRun, callback))); | 513 base::Bind(&ParseResourceEntryAndRun, callback))); |
| 514 } | 514 } |
| 515 | 515 |
| 516 void DriveAPIService::CopyHostedDocument( | 516 void DriveAPIService::CopyHostedDocument( |
| 517 const std::string& resource_id, | 517 const std::string& resource_id, |
| 518 const std::string& new_name, | 518 const std::string& new_name, |
| 519 const GetResourceEntryCallback& callback) { | 519 const GetResourceEntryCallback& callback) { |
| 520 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 520 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 521 DCHECK(!callback.is_null()); | 521 DCHECK(!callback.is_null()); |
| 522 | 522 |
| 523 runner_->StartOperationWithRetry( | 523 runner_->StartOperationWithRetry( |
| 524 new drive::CopyResourceOperation( | 524 new drive::CopyResourceOperation( |
| 525 operation_registry(), | 525 runner_.get(), |
| 526 url_request_context_getter_, | 526 url_request_context_getter_, |
| 527 url_generator_, | 527 url_generator_, |
| 528 resource_id, | 528 resource_id, |
| 529 std::string(), // parent_resource_id. | 529 std::string(), // parent_resource_id. |
| 530 new_name, | 530 new_name, |
| 531 base::Bind(&ParseResourceEntryAndRun, callback))); | 531 base::Bind(&ParseResourceEntryAndRun, callback))); |
| 532 } | 532 } |
| 533 | 533 |
| 534 void DriveAPIService::RenameResource( | 534 void DriveAPIService::RenameResource( |
| 535 const std::string& resource_id, | 535 const std::string& resource_id, |
| 536 const std::string& new_name, | 536 const std::string& new_name, |
| 537 const EntryActionCallback& callback) { | 537 const EntryActionCallback& callback) { |
| 538 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 538 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 539 DCHECK(!callback.is_null()); | 539 DCHECK(!callback.is_null()); |
| 540 | 540 |
| 541 runner_->StartOperationWithRetry( | 541 runner_->StartOperationWithRetry( |
| 542 new drive::RenameResourceOperation( | 542 new drive::RenameResourceOperation( |
| 543 operation_registry(), | 543 runner_.get(), |
| 544 url_request_context_getter_, | 544 url_request_context_getter_, |
| 545 url_generator_, | 545 url_generator_, |
| 546 resource_id, | 546 resource_id, |
| 547 new_name, | 547 new_name, |
| 548 callback)); | 548 callback)); |
| 549 } | 549 } |
| 550 | 550 |
| 551 void DriveAPIService::AddResourceToDirectory( | 551 void DriveAPIService::AddResourceToDirectory( |
| 552 const std::string& parent_resource_id, | 552 const std::string& parent_resource_id, |
| 553 const std::string& resource_id, | 553 const std::string& resource_id, |
| 554 const EntryActionCallback& callback) { | 554 const EntryActionCallback& callback) { |
| 555 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 555 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 556 DCHECK(!callback.is_null()); | 556 DCHECK(!callback.is_null()); |
| 557 | 557 |
| 558 runner_->StartOperationWithRetry( | 558 runner_->StartOperationWithRetry( |
| 559 new drive::InsertResourceOperation( | 559 new drive::InsertResourceOperation( |
| 560 operation_registry(), | 560 runner_.get(), |
| 561 url_request_context_getter_, | 561 url_request_context_getter_, |
| 562 url_generator_, | 562 url_generator_, |
| 563 parent_resource_id, | 563 parent_resource_id, |
| 564 resource_id, | 564 resource_id, |
| 565 callback)); | 565 callback)); |
| 566 } | 566 } |
| 567 | 567 |
| 568 void DriveAPIService::RemoveResourceFromDirectory( | 568 void DriveAPIService::RemoveResourceFromDirectory( |
| 569 const std::string& parent_resource_id, | 569 const std::string& parent_resource_id, |
| 570 const std::string& resource_id, | 570 const std::string& resource_id, |
| 571 const EntryActionCallback& callback) { | 571 const EntryActionCallback& callback) { |
| 572 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 572 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 573 DCHECK(!callback.is_null()); | 573 DCHECK(!callback.is_null()); |
| 574 | 574 |
| 575 runner_->StartOperationWithRetry( | 575 runner_->StartOperationWithRetry( |
| 576 new drive::DeleteResourceOperation( | 576 new drive::DeleteResourceOperation( |
| 577 operation_registry(), | 577 runner_.get(), |
| 578 url_request_context_getter_, | 578 url_request_context_getter_, |
| 579 url_generator_, | 579 url_generator_, |
| 580 parent_resource_id, | 580 parent_resource_id, |
| 581 resource_id, | 581 resource_id, |
| 582 callback)); | 582 callback)); |
| 583 } | 583 } |
| 584 | 584 |
| 585 void DriveAPIService::InitiateUploadNewFile( | 585 void DriveAPIService::InitiateUploadNewFile( |
| 586 const base::FilePath& drive_file_path, | 586 const base::FilePath& drive_file_path, |
| 587 const std::string& content_type, | 587 const std::string& content_type, |
| 588 int64 content_length, | 588 int64 content_length, |
| 589 const std::string& parent_resource_id, | 589 const std::string& parent_resource_id, |
| 590 const std::string& title, | 590 const std::string& title, |
| 591 const InitiateUploadCallback& callback) { | 591 const InitiateUploadCallback& callback) { |
| 592 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 592 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 593 DCHECK(!callback.is_null()); | 593 DCHECK(!callback.is_null()); |
| 594 | 594 |
| 595 runner_->StartOperationWithRetry( | 595 runner_->StartOperationWithRetry( |
| 596 new drive::InitiateUploadNewFileOperation( | 596 new drive::InitiateUploadNewFileOperation( |
| 597 operation_registry(), | 597 runner_.get(), |
| 598 url_request_context_getter_, | 598 url_request_context_getter_, |
| 599 url_generator_, | 599 url_generator_, |
| 600 drive_file_path, | 600 drive_file_path, |
| 601 content_type, | 601 content_type, |
| 602 content_length, | 602 content_length, |
| 603 parent_resource_id, | 603 parent_resource_id, |
| 604 title, | 604 title, |
| 605 callback)); | 605 callback)); |
| 606 } | 606 } |
| 607 | 607 |
| 608 void DriveAPIService::InitiateUploadExistingFile( | 608 void DriveAPIService::InitiateUploadExistingFile( |
| 609 const base::FilePath& drive_file_path, | 609 const base::FilePath& drive_file_path, |
| 610 const std::string& content_type, | 610 const std::string& content_type, |
| 611 int64 content_length, | 611 int64 content_length, |
| 612 const std::string& resource_id, | 612 const std::string& resource_id, |
| 613 const std::string& etag, | 613 const std::string& etag, |
| 614 const InitiateUploadCallback& callback) { | 614 const InitiateUploadCallback& callback) { |
| 615 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 615 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 616 DCHECK(!callback.is_null()); | 616 DCHECK(!callback.is_null()); |
| 617 | 617 |
| 618 runner_->StartOperationWithRetry( | 618 runner_->StartOperationWithRetry( |
| 619 new drive::InitiateUploadExistingFileOperation( | 619 new drive::InitiateUploadExistingFileOperation( |
| 620 operation_registry(), | 620 runner_.get(), |
| 621 url_request_context_getter_, | 621 url_request_context_getter_, |
| 622 url_generator_, | 622 url_generator_, |
| 623 drive_file_path, | 623 drive_file_path, |
| 624 content_type, | 624 content_type, |
| 625 content_length, | 625 content_length, |
| 626 resource_id, | 626 resource_id, |
| 627 etag, | 627 etag, |
| 628 callback)); | 628 callback)); |
| 629 } | 629 } |
| 630 | 630 |
| 631 void DriveAPIService::ResumeUpload( | 631 void DriveAPIService::ResumeUpload( |
| 632 const base::FilePath& drive_file_path, | 632 const base::FilePath& drive_file_path, |
| 633 const GURL& upload_url, | 633 const GURL& upload_url, |
| 634 int64 start_position, | 634 int64 start_position, |
| 635 int64 end_position, | 635 int64 end_position, |
| 636 int64 content_length, | 636 int64 content_length, |
| 637 const std::string& content_type, | 637 const std::string& content_type, |
| 638 const base::FilePath& local_file_path, | 638 const base::FilePath& local_file_path, |
| 639 const UploadRangeCallback& callback, | 639 const UploadRangeCallback& callback, |
| 640 const ProgressCallback& progress_callback) { | 640 const ProgressCallback& progress_callback) { |
| 641 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 641 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 642 DCHECK(!callback.is_null()); | 642 DCHECK(!callback.is_null()); |
| 643 | 643 |
| 644 runner_->StartOperationWithRetry( | 644 runner_->StartOperationWithRetry( |
| 645 new drive::ResumeUploadOperation( | 645 new drive::ResumeUploadOperation( |
| 646 operation_registry(), | 646 runner_.get(), |
| 647 url_request_context_getter_, | 647 url_request_context_getter_, |
| 648 drive_file_path, | 648 drive_file_path, |
| 649 upload_url, | 649 upload_url, |
| 650 start_position, | 650 start_position, |
| 651 end_position, | 651 end_position, |
| 652 content_length, | 652 content_length, |
| 653 content_type, | 653 content_type, |
| 654 local_file_path, | 654 local_file_path, |
| 655 base::Bind(&ParseResourceEntryForUploadRangeAndRun, callback), | 655 base::Bind(&ParseResourceEntryForUploadRangeAndRun, callback), |
| 656 progress_callback)); | 656 progress_callback)); |
| 657 } | 657 } |
| 658 | 658 |
| 659 void DriveAPIService::GetUploadStatus( | 659 void DriveAPIService::GetUploadStatus( |
| 660 const base::FilePath& drive_file_path, | 660 const base::FilePath& drive_file_path, |
| 661 const GURL& upload_url, | 661 const GURL& upload_url, |
| 662 int64 content_length, | 662 int64 content_length, |
| 663 const UploadRangeCallback& callback) { | 663 const UploadRangeCallback& callback) { |
| 664 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 664 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 665 DCHECK(!callback.is_null()); | 665 DCHECK(!callback.is_null()); |
| 666 | 666 |
| 667 runner_->StartOperationWithRetry(new drive::GetUploadStatusOperation( | 667 runner_->StartOperationWithRetry(new drive::GetUploadStatusOperation( |
| 668 operation_registry(), | 668 runner_.get(), |
| 669 url_request_context_getter_, | 669 url_request_context_getter_, |
| 670 drive_file_path, | 670 drive_file_path, |
| 671 upload_url, | 671 upload_url, |
| 672 content_length, | 672 content_length, |
| 673 base::Bind(&ParseResourceEntryForUploadRangeAndRun, callback))); | 673 base::Bind(&ParseResourceEntryForUploadRangeAndRun, callback))); |
| 674 } | 674 } |
| 675 | 675 |
| 676 void DriveAPIService::AuthorizeApp( | 676 void DriveAPIService::AuthorizeApp( |
| 677 const std::string& resource_id, | 677 const std::string& resource_id, |
| 678 const std::string& app_id, | 678 const std::string& app_id, |
| 679 const AuthorizeAppCallback& callback) { | 679 const AuthorizeAppCallback& callback) { |
| 680 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 680 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 681 DCHECK(!callback.is_null()); | 681 DCHECK(!callback.is_null()); |
| 682 | 682 |
| 683 runner_->StartOperationWithRetry(new GetFileOperation( | 683 runner_->StartOperationWithRetry(new GetFileOperation( |
| 684 operation_registry(), | 684 runner_.get(), |
| 685 url_request_context_getter_, | 685 url_request_context_getter_, |
| 686 url_generator_, | 686 url_generator_, |
| 687 resource_id, | 687 resource_id, |
| 688 base::Bind(&ExtractOpenUrlAndRun, app_id, callback))); | 688 base::Bind(&ExtractOpenUrlAndRun, app_id, callback))); |
| 689 } | 689 } |
| 690 | 690 |
| 691 bool DriveAPIService::HasAccessToken() const { | 691 bool DriveAPIService::HasAccessToken() const { |
| 692 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 692 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 693 | 693 |
| 694 return runner_->auth_service()->HasAccessToken(); | 694 return runner_->auth_service()->HasAccessToken(); |
| 695 } | 695 } |
| 696 | 696 |
| 697 bool DriveAPIService::HasRefreshToken() const { | 697 bool DriveAPIService::HasRefreshToken() const { |
| 698 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 698 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 699 | 699 |
| 700 return runner_->auth_service()->HasRefreshToken(); | 700 return runner_->auth_service()->HasRefreshToken(); |
| 701 } | 701 } |
| 702 | 702 |
| 703 void DriveAPIService::ClearAccessToken() { | 703 void DriveAPIService::ClearAccessToken() { |
| 704 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 704 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 705 return runner_->auth_service()->ClearAccessToken(); | 705 return runner_->auth_service()->ClearAccessToken(); |
| 706 } | 706 } |
| 707 | 707 |
| 708 void DriveAPIService::ClearRefreshToken() { | 708 void DriveAPIService::ClearRefreshToken() { |
| 709 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 709 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 710 return runner_->auth_service()->ClearRefreshToken(); | 710 return runner_->auth_service()->ClearRefreshToken(); |
| 711 } | 711 } |
| 712 | 712 |
| 713 OperationRegistry* DriveAPIService::operation_registry() const { | |
| 714 return runner_->operation_registry(); | |
| 715 } | |
| 716 | |
| 717 void DriveAPIService::OnOAuth2RefreshTokenChanged() { | 713 void DriveAPIService::OnOAuth2RefreshTokenChanged() { |
| 718 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 714 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 719 if (CanStartOperation()) { | 715 if (CanStartOperation()) { |
| 720 FOR_EACH_OBSERVER( | 716 FOR_EACH_OBSERVER( |
| 721 DriveServiceObserver, observers_, OnReadyToPerformOperations()); | 717 DriveServiceObserver, observers_, OnReadyToPerformOperations()); |
| 722 } else if (!HasRefreshToken()) { | 718 } else if (!HasRefreshToken()) { |
| 723 FOR_EACH_OBSERVER( | 719 FOR_EACH_OBSERVER( |
| 724 DriveServiceObserver, observers_, OnRefreshTokenInvalid()); | 720 DriveServiceObserver, observers_, OnRefreshTokenInvalid()); |
| 725 } | 721 } |
| 726 } | 722 } |
| 727 | 723 |
| 728 } // namespace google_apis | 724 } // namespace google_apis |
| OLD | NEW |