| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/extensions/file_manager/private_api_drive.h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/private_api_drive.h" |
| 6 | 6 |
| 7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
| 8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
| 9 #include "chrome/browser/chromeos/drive/drive_app_registry.h" | 9 #include "chrome/browser/chromeos/drive/drive_app_registry.h" |
| 10 #include "chrome/browser/chromeos/drive/drive_integration_service.h" | 10 #include "chrome/browser/chromeos/drive/drive_integration_service.h" |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 // TODO(kinaba): simplify cancelFileTransfer() to take single URL each time, | 375 // TODO(kinaba): simplify cancelFileTransfer() to take single URL each time, |
| 376 // and eliminate this field; it is just returning a copy of the argument. | 376 // and eliminate this field; it is just returning a copy of the argument. |
| 377 result->SetString("fileUrl", url_as_string); | 377 result->SetString("fileUrl", url_as_string); |
| 378 responses->Append(result.release()); | 378 responses->Append(result.release()); |
| 379 } | 379 } |
| 380 SetResult(responses.release()); | 380 SetResult(responses.release()); |
| 381 SendResponse(true); | 381 SendResponse(true); |
| 382 return true; | 382 return true; |
| 383 } | 383 } |
| 384 | 384 |
| 385 TransferFileFunction::TransferFileFunction() { | |
| 386 } | |
| 387 | |
| 388 TransferFileFunction::~TransferFileFunction() { | |
| 389 } | |
| 390 | |
| 391 bool TransferFileFunction::RunImpl() { | |
| 392 std::string source_file_url; | |
| 393 std::string destination_file_url; | |
| 394 if (!args_->GetString(0, &source_file_url) || | |
| 395 !args_->GetString(1, &destination_file_url)) { | |
| 396 return false; | |
| 397 } | |
| 398 | |
| 399 drive::DriveIntegrationService* integration_service = | |
| 400 drive::DriveIntegrationServiceFactory::GetForProfile(profile_); | |
| 401 // |integration_service| is NULL if Drive is disabled. | |
| 402 if (!integration_service) | |
| 403 return false; | |
| 404 | |
| 405 base::FilePath source_file = util::GetLocalPathFromURL( | |
| 406 render_view_host(), profile(), GURL(source_file_url)); | |
| 407 base::FilePath destination_file = util::GetLocalPathFromURL( | |
| 408 render_view_host(), profile(), GURL(destination_file_url)); | |
| 409 if (source_file.empty() || destination_file.empty()) | |
| 410 return false; | |
| 411 | |
| 412 bool source_file_under_drive = | |
| 413 drive::util::IsUnderDriveMountPoint(source_file); | |
| 414 bool destination_file_under_drive = | |
| 415 drive::util::IsUnderDriveMountPoint(destination_file); | |
| 416 | |
| 417 if (source_file_under_drive && !destination_file_under_drive) { | |
| 418 // Transfer a file from drive to local file system. | |
| 419 source_file = drive::util::ExtractDrivePath(source_file); | |
| 420 integration_service->file_system()->TransferFileFromRemoteToLocal( | |
| 421 source_file, | |
| 422 destination_file, | |
| 423 base::Bind(&TransferFileFunction::OnTransferCompleted, this)); | |
| 424 } else if (!source_file_under_drive && destination_file_under_drive) { | |
| 425 // Transfer a file from local to Drive file system | |
| 426 destination_file = drive::util::ExtractDrivePath(destination_file); | |
| 427 integration_service->file_system()->TransferFileFromLocalToRemote( | |
| 428 source_file, | |
| 429 destination_file, | |
| 430 base::Bind(&TransferFileFunction::OnTransferCompleted, this)); | |
| 431 } else { | |
| 432 // Local-to-local or Drive-to-Drive file transfers should be done via | |
| 433 // FileEntry.copyTo in the File API and are thus not supported here. | |
| 434 NOTREACHED(); | |
| 435 SendResponse(false); | |
| 436 } | |
| 437 return true; | |
| 438 } | |
| 439 | |
| 440 void TransferFileFunction::OnTransferCompleted(drive::FileError error) { | |
| 441 if (error == drive::FILE_ERROR_OK) { | |
| 442 SendResponse(true); | |
| 443 } else { | |
| 444 error_ = base::StringPrintf("%d", static_cast<int>( | |
| 445 fileapi::PlatformFileErrorToWebFileError( | |
| 446 drive::FileErrorToPlatformError(error)))); | |
| 447 SendResponse(false); | |
| 448 } | |
| 449 } | |
| 450 | |
| 451 SearchDriveFunction::SearchDriveFunction() { | 385 SearchDriveFunction::SearchDriveFunction() { |
| 452 } | 386 } |
| 453 | 387 |
| 454 SearchDriveFunction::~SearchDriveFunction() { | 388 SearchDriveFunction::~SearchDriveFunction() { |
| 455 } | 389 } |
| 456 | 390 |
| 457 bool SearchDriveFunction::RunImpl() { | 391 bool SearchDriveFunction::RunImpl() { |
| 458 DictionaryValue* search_params; | 392 DictionaryValue* search_params; |
| 459 if (!args_->GetDictionary(0, &search_params)) | 393 if (!args_->GetDictionary(0, &search_params)) |
| 460 return false; | 394 return false; |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 error_ = "Share Url for this item is not available."; | 688 error_ = "Share Url for this item is not available."; |
| 755 SendResponse(false); | 689 SendResponse(false); |
| 756 return; | 690 return; |
| 757 } | 691 } |
| 758 | 692 |
| 759 SetResult(new base::StringValue(share_url.spec())); | 693 SetResult(new base::StringValue(share_url.spec())); |
| 760 SendResponse(true); | 694 SendResponse(true); |
| 761 } | 695 } |
| 762 | 696 |
| 763 } // namespace file_manager | 697 } // namespace file_manager |
| OLD | NEW |