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_file_syste
m.h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/private_api_file_syste
m.h" |
6 | 6 |
7 #include <sys/statvfs.h> | 7 #include <sys/statvfs.h> |
| 8 |
8 #include <set> | 9 #include <set> |
9 | 10 |
| 11 #include "base/memory/ptr_util.h" |
10 #include "base/memory/weak_ptr.h" | 12 #include "base/memory/weak_ptr.h" |
11 #include "base/posix/eintr_wrapper.h" | 13 #include "base/posix/eintr_wrapper.h" |
12 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
13 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
14 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
15 #include "base/sys_info.h" | 17 #include "base/sys_info.h" |
16 #include "base/task_runner_util.h" | 18 #include "base/task_runner_util.h" |
17 #include "base/threading/sequenced_worker_pool.h" | 19 #include "base/threading/sequenced_worker_pool.h" |
18 #include "chrome/browser/browser_process.h" | 20 #include "chrome/browser/browser_process.h" |
19 #include "chrome/browser/chromeos/drive/file_system_util.h" | 21 #include "chrome/browser/chromeos/drive/file_system_util.h" |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 render_frame_host()->GetProcess()->GetID(), content::kExternalFileScheme); | 279 render_frame_host()->GetProcess()->GetID(), content::kExternalFileScheme); |
278 return RespondNow(NoArguments()); | 280 return RespondNow(NoArguments()); |
279 } | 281 } |
280 | 282 |
281 FileManagerPrivateGrantAccessFunction::FileManagerPrivateGrantAccessFunction() | 283 FileManagerPrivateGrantAccessFunction::FileManagerPrivateGrantAccessFunction() |
282 : chrome_details_(this) { | 284 : chrome_details_(this) { |
283 } | 285 } |
284 | 286 |
285 ExtensionFunction::ResponseAction FileManagerPrivateGrantAccessFunction::Run() { | 287 ExtensionFunction::ResponseAction FileManagerPrivateGrantAccessFunction::Run() { |
286 using extensions::api::file_manager_private::GrantAccess::Params; | 288 using extensions::api::file_manager_private::GrantAccess::Params; |
287 const scoped_ptr<Params> params(Params::Create(*args_)); | 289 const std::unique_ptr<Params> params(Params::Create(*args_)); |
288 EXTENSION_FUNCTION_VALIDATE(params); | 290 EXTENSION_FUNCTION_VALIDATE(params); |
289 | 291 |
290 scoped_refptr<storage::FileSystemContext> file_system_context = | 292 scoped_refptr<storage::FileSystemContext> file_system_context = |
291 file_manager::util::GetFileSystemContextForRenderFrameHost( | 293 file_manager::util::GetFileSystemContextForRenderFrameHost( |
292 chrome_details_.GetProfile(), render_frame_host()); | 294 chrome_details_.GetProfile(), render_frame_host()); |
293 | 295 |
294 storage::ExternalFileSystemBackend* const backend = | 296 storage::ExternalFileSystemBackend* const backend = |
295 file_system_context->external_backend(); | 297 file_system_context->external_backend(); |
296 DCHECK(backend); | 298 DCHECK(backend); |
297 | 299 |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 return; | 409 return; |
408 } | 410 } |
409 | 411 |
410 // Obsolete. Fallback code if storage::WatcherManager is not implemented. | 412 // Obsolete. Fallback code if storage::WatcherManager is not implemented. |
411 event_router->RemoveFileWatch(file_system_url.path(), extension_id); | 413 event_router->RemoveFileWatch(file_system_url.path(), extension_id); |
412 Respond(true); | 414 Respond(true); |
413 } | 415 } |
414 | 416 |
415 bool FileManagerPrivateGetSizeStatsFunction::RunAsync() { | 417 bool FileManagerPrivateGetSizeStatsFunction::RunAsync() { |
416 using extensions::api::file_manager_private::GetSizeStats::Params; | 418 using extensions::api::file_manager_private::GetSizeStats::Params; |
417 const scoped_ptr<Params> params(Params::Create(*args_)); | 419 const std::unique_ptr<Params> params(Params::Create(*args_)); |
418 EXTENSION_FUNCTION_VALIDATE(params); | 420 EXTENSION_FUNCTION_VALIDATE(params); |
419 | 421 |
420 using file_manager::VolumeManager; | 422 using file_manager::VolumeManager; |
421 using file_manager::Volume; | 423 using file_manager::Volume; |
422 VolumeManager* const volume_manager = VolumeManager::Get(GetProfile()); | 424 VolumeManager* const volume_manager = VolumeManager::Get(GetProfile()); |
423 if (!volume_manager) | 425 if (!volume_manager) |
424 return false; | 426 return false; |
425 | 427 |
426 base::WeakPtr<Volume> volume = | 428 base::WeakPtr<Volume> volume = |
427 volume_manager->FindVolumeById(params->volume_id); | 429 volume_manager->FindVolumeById(params->volume_id); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 | 536 |
535 sizes->SetDouble("totalSize", static_cast<double>(*total_size)); | 537 sizes->SetDouble("totalSize", static_cast<double>(*total_size)); |
536 sizes->SetDouble("remainingSize", static_cast<double>(*remaining_size)); | 538 sizes->SetDouble("remainingSize", static_cast<double>(*remaining_size)); |
537 | 539 |
538 SendResponse(true); | 540 SendResponse(true); |
539 } | 541 } |
540 | 542 |
541 bool FileManagerPrivateInternalValidatePathNameLengthFunction::RunAsync() { | 543 bool FileManagerPrivateInternalValidatePathNameLengthFunction::RunAsync() { |
542 using extensions::api::file_manager_private_internal::ValidatePathNameLength:: | 544 using extensions::api::file_manager_private_internal::ValidatePathNameLength:: |
543 Params; | 545 Params; |
544 const scoped_ptr<Params> params(Params::Create(*args_)); | 546 const std::unique_ptr<Params> params(Params::Create(*args_)); |
545 EXTENSION_FUNCTION_VALIDATE(params); | 547 EXTENSION_FUNCTION_VALIDATE(params); |
546 | 548 |
547 scoped_refptr<storage::FileSystemContext> file_system_context = | 549 scoped_refptr<storage::FileSystemContext> file_system_context = |
548 file_manager::util::GetFileSystemContextForRenderFrameHost( | 550 file_manager::util::GetFileSystemContextForRenderFrameHost( |
549 GetProfile(), render_frame_host()); | 551 GetProfile(), render_frame_host()); |
550 | 552 |
551 const storage::FileSystemURL file_system_url( | 553 const storage::FileSystemURL file_system_url( |
552 file_system_context->CrackURL(GURL(params->parent_url))); | 554 file_system_context->CrackURL(GURL(params->parent_url))); |
553 if (!chromeos::FileSystemBackend::CanHandleURL(file_system_url)) | 555 if (!chromeos::FileSystemBackend::CanHandleURL(file_system_url)) |
554 return false; | 556 return false; |
(...skipping 16 matching lines...) Expand all Loading... |
571 } | 573 } |
572 | 574 |
573 void FileManagerPrivateInternalValidatePathNameLengthFunction:: | 575 void FileManagerPrivateInternalValidatePathNameLengthFunction:: |
574 OnFilePathLimitRetrieved(size_t current_length, size_t max_length) { | 576 OnFilePathLimitRetrieved(size_t current_length, size_t max_length) { |
575 SetResult(new base::FundamentalValue(current_length <= max_length)); | 577 SetResult(new base::FundamentalValue(current_length <= max_length)); |
576 SendResponse(true); | 578 SendResponse(true); |
577 } | 579 } |
578 | 580 |
579 bool FileManagerPrivateFormatVolumeFunction::RunAsync() { | 581 bool FileManagerPrivateFormatVolumeFunction::RunAsync() { |
580 using extensions::api::file_manager_private::FormatVolume::Params; | 582 using extensions::api::file_manager_private::FormatVolume::Params; |
581 const scoped_ptr<Params> params(Params::Create(*args_)); | 583 const std::unique_ptr<Params> params(Params::Create(*args_)); |
582 EXTENSION_FUNCTION_VALIDATE(params); | 584 EXTENSION_FUNCTION_VALIDATE(params); |
583 | 585 |
584 using file_manager::VolumeManager; | 586 using file_manager::VolumeManager; |
585 using file_manager::Volume; | 587 using file_manager::Volume; |
586 VolumeManager* const volume_manager = VolumeManager::Get(GetProfile()); | 588 VolumeManager* const volume_manager = VolumeManager::Get(GetProfile()); |
587 if (!volume_manager) | 589 if (!volume_manager) |
588 return false; | 590 return false; |
589 | 591 |
590 base::WeakPtr<Volume> volume = | 592 base::WeakPtr<Volume> volume = |
591 volume_manager->FindVolumeById(params->volume_id); | 593 volume_manager->FindVolumeById(params->volume_id); |
(...skipping 21 matching lines...) Expand all Loading... |
613 bool CheckLocalDiskSpaceOnIOThread(const base::FilePath& path, int64_t bytes) { | 615 bool CheckLocalDiskSpaceOnIOThread(const base::FilePath& path, int64_t bytes) { |
614 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 616 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
615 return bytes <= base::SysInfo::AmountOfFreeDiskSpace(path) - | 617 return bytes <= base::SysInfo::AmountOfFreeDiskSpace(path) - |
616 cryptohome::kMinFreeSpaceInBytes; | 618 cryptohome::kMinFreeSpaceInBytes; |
617 } | 619 } |
618 | 620 |
619 bool FileManagerPrivateInternalStartCopyFunction::RunAsync() { | 621 bool FileManagerPrivateInternalStartCopyFunction::RunAsync() { |
620 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 622 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
621 | 623 |
622 using extensions::api::file_manager_private_internal::StartCopy::Params; | 624 using extensions::api::file_manager_private_internal::StartCopy::Params; |
623 const scoped_ptr<Params> params(Params::Create(*args_)); | 625 const std::unique_ptr<Params> params(Params::Create(*args_)); |
624 EXTENSION_FUNCTION_VALIDATE(params); | 626 EXTENSION_FUNCTION_VALIDATE(params); |
625 | 627 |
626 if (params->url.empty() || params->parent_url.empty() || | 628 if (params->url.empty() || params->parent_url.empty() || |
627 params->new_name.empty()) { | 629 params->new_name.empty()) { |
628 // Error code in format of DOMError.name. | 630 // Error code in format of DOMError.name. |
629 SetError("EncodingError"); | 631 SetError("EncodingError"); |
630 return false; | 632 return false; |
631 } | 633 } |
632 | 634 |
633 scoped_refptr<storage::FileSystemContext> file_system_context = | 635 scoped_refptr<storage::FileSystemContext> file_system_context = |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
733 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 735 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
734 | 736 |
735 SetResult(new base::FundamentalValue(operation_id)); | 737 SetResult(new base::FundamentalValue(operation_id)); |
736 SendResponse(true); | 738 SendResponse(true); |
737 } | 739 } |
738 | 740 |
739 bool FileManagerPrivateCancelCopyFunction::RunAsync() { | 741 bool FileManagerPrivateCancelCopyFunction::RunAsync() { |
740 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 742 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
741 | 743 |
742 using extensions::api::file_manager_private::CancelCopy::Params; | 744 using extensions::api::file_manager_private::CancelCopy::Params; |
743 const scoped_ptr<Params> params(Params::Create(*args_)); | 745 const std::unique_ptr<Params> params(Params::Create(*args_)); |
744 EXTENSION_FUNCTION_VALIDATE(params); | 746 EXTENSION_FUNCTION_VALIDATE(params); |
745 | 747 |
746 scoped_refptr<storage::FileSystemContext> file_system_context = | 748 scoped_refptr<storage::FileSystemContext> file_system_context = |
747 file_manager::util::GetFileSystemContextForRenderFrameHost( | 749 file_manager::util::GetFileSystemContextForRenderFrameHost( |
748 GetProfile(), render_frame_host()); | 750 GetProfile(), render_frame_host()); |
749 | 751 |
750 // We don't much take care about the result of cancellation. | 752 // We don't much take care about the result of cancellation. |
751 BrowserThread::PostTask( | 753 BrowserThread::PostTask( |
752 BrowserThread::IO, | 754 BrowserThread::IO, |
753 FROM_HERE, | 755 FROM_HERE, |
754 base::Bind(&CancelCopyOnIOThread, file_system_context, params->copy_id)); | 756 base::Bind(&CancelCopyOnIOThread, file_system_context, params->copy_id)); |
755 SendResponse(true); | 757 SendResponse(true); |
756 return true; | 758 return true; |
757 } | 759 } |
758 | 760 |
759 bool FileManagerPrivateInternalResolveIsolatedEntriesFunction::RunAsync() { | 761 bool FileManagerPrivateInternalResolveIsolatedEntriesFunction::RunAsync() { |
760 using extensions::api::file_manager_private_internal::ResolveIsolatedEntries:: | 762 using extensions::api::file_manager_private_internal::ResolveIsolatedEntries:: |
761 Params; | 763 Params; |
762 const scoped_ptr<Params> params(Params::Create(*args_)); | 764 const std::unique_ptr<Params> params(Params::Create(*args_)); |
763 EXTENSION_FUNCTION_VALIDATE(params); | 765 EXTENSION_FUNCTION_VALIDATE(params); |
764 | 766 |
765 scoped_refptr<storage::FileSystemContext> file_system_context = | 767 scoped_refptr<storage::FileSystemContext> file_system_context = |
766 file_manager::util::GetFileSystemContextForRenderFrameHost( | 768 file_manager::util::GetFileSystemContextForRenderFrameHost( |
767 GetProfile(), render_frame_host()); | 769 GetProfile(), render_frame_host()); |
768 DCHECK(file_system_context.get()); | 770 DCHECK(file_system_context.get()); |
769 | 771 |
770 const storage::ExternalFileSystemBackend* external_backend = | 772 const storage::ExternalFileSystemBackend* external_backend = |
771 file_system_context->external_backend(); | 773 file_system_context->external_backend(); |
772 DCHECK(external_backend); | 774 DCHECK(external_backend); |
(...skipping 21 matching lines...) Expand all Loading... |
794 extension_->id(), | 796 extension_->id(), |
795 file_definition_list, // Safe, since copied internally. | 797 file_definition_list, // Safe, since copied internally. |
796 base::Bind( | 798 base::Bind( |
797 &FileManagerPrivateInternalResolveIsolatedEntriesFunction:: | 799 &FileManagerPrivateInternalResolveIsolatedEntriesFunction:: |
798 RunAsyncAfterConvertFileDefinitionListToEntryDefinitionList, | 800 RunAsyncAfterConvertFileDefinitionListToEntryDefinitionList, |
799 this)); | 801 this)); |
800 return true; | 802 return true; |
801 } | 803 } |
802 | 804 |
803 void FileManagerPrivateInternalResolveIsolatedEntriesFunction:: | 805 void FileManagerPrivateInternalResolveIsolatedEntriesFunction:: |
804 RunAsyncAfterConvertFileDefinitionListToEntryDefinitionList(scoped_ptr< | 806 RunAsyncAfterConvertFileDefinitionListToEntryDefinitionList( |
805 file_manager::util::EntryDefinitionList> entry_definition_list) { | 807 std::unique_ptr<file_manager::util::EntryDefinitionList> |
| 808 entry_definition_list) { |
806 using extensions::api::file_manager_private_internal::EntryDescription; | 809 using extensions::api::file_manager_private_internal::EntryDescription; |
807 std::vector<EntryDescription> entries; | 810 std::vector<EntryDescription> entries; |
808 | 811 |
809 for (const auto& definition : *entry_definition_list) { | 812 for (const auto& definition : *entry_definition_list) { |
810 if (definition.error != base::File::FILE_OK) | 813 if (definition.error != base::File::FILE_OK) |
811 continue; | 814 continue; |
812 EntryDescription entry; | 815 EntryDescription entry; |
813 entry.file_system_name = definition.file_system_name; | 816 entry.file_system_name = definition.file_system_name; |
814 entry.file_system_root = definition.file_system_root_url; | 817 entry.file_system_root = definition.file_system_root_url; |
815 entry.file_full_path = "/" + definition.full_path.AsUTF8Unsafe(); | 818 entry.file_full_path = "/" + definition.full_path.AsUTF8Unsafe(); |
(...skipping 11 matching lines...) Expand all Loading... |
827 : digester_(new drive::util::FileStreamMd5Digester()) { | 830 : digester_(new drive::util::FileStreamMd5Digester()) { |
828 } | 831 } |
829 | 832 |
830 FileManagerPrivateInternalComputeChecksumFunction:: | 833 FileManagerPrivateInternalComputeChecksumFunction:: |
831 ~FileManagerPrivateInternalComputeChecksumFunction() { | 834 ~FileManagerPrivateInternalComputeChecksumFunction() { |
832 } | 835 } |
833 | 836 |
834 bool FileManagerPrivateInternalComputeChecksumFunction::RunAsync() { | 837 bool FileManagerPrivateInternalComputeChecksumFunction::RunAsync() { |
835 using extensions::api::file_manager_private_internal::ComputeChecksum::Params; | 838 using extensions::api::file_manager_private_internal::ComputeChecksum::Params; |
836 using drive::util::FileStreamMd5Digester; | 839 using drive::util::FileStreamMd5Digester; |
837 const scoped_ptr<Params> params(Params::Create(*args_)); | 840 const std::unique_ptr<Params> params(Params::Create(*args_)); |
838 EXTENSION_FUNCTION_VALIDATE(params); | 841 EXTENSION_FUNCTION_VALIDATE(params); |
839 | 842 |
840 if (params->url.empty()) { | 843 if (params->url.empty()) { |
841 SetError("File URL must be provided"); | 844 SetError("File URL must be provided"); |
842 return false; | 845 return false; |
843 } | 846 } |
844 | 847 |
845 scoped_refptr<storage::FileSystemContext> file_system_context = | 848 scoped_refptr<storage::FileSystemContext> file_system_context = |
846 file_manager::util::GetFileSystemContextForRenderFrameHost( | 849 file_manager::util::GetFileSystemContextForRenderFrameHost( |
847 GetProfile(), render_frame_host()); | 850 GetProfile(), render_frame_host()); |
848 | 851 |
849 FileSystemURL file_system_url( | 852 FileSystemURL file_system_url( |
850 file_system_context->CrackURL(GURL(params->url))); | 853 file_system_context->CrackURL(GURL(params->url))); |
851 if (!file_system_url.is_valid()) { | 854 if (!file_system_url.is_valid()) { |
852 SetError("File URL was invalid"); | 855 SetError("File URL was invalid"); |
853 return false; | 856 return false; |
854 } | 857 } |
855 | 858 |
856 scoped_ptr<storage::FileStreamReader> reader = | 859 std::unique_ptr<storage::FileStreamReader> reader = |
857 file_system_context->CreateFileStreamReader( | 860 file_system_context->CreateFileStreamReader( |
858 file_system_url, 0, storage::kMaximumLength, base::Time()); | 861 file_system_url, 0, storage::kMaximumLength, base::Time()); |
859 | 862 |
860 FileStreamMd5Digester::ResultCallback result_callback = base::Bind( | 863 FileStreamMd5Digester::ResultCallback result_callback = base::Bind( |
861 &ComputeChecksumRespondOnUIThread, | 864 &ComputeChecksumRespondOnUIThread, |
862 base::Bind(&FileManagerPrivateInternalComputeChecksumFunction::Respond, | 865 base::Bind(&FileManagerPrivateInternalComputeChecksumFunction::Respond, |
863 this)); | 866 this)); |
864 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | 867 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
865 base::Bind(&FileStreamMd5Digester::GetMd5Digest, | 868 base::Bind(&FileStreamMd5Digester::GetMd5Digest, |
866 base::Unretained(digester_.get()), | 869 base::Unretained(digester_.get()), |
867 base::Passed(&reader), result_callback)); | 870 base::Passed(&reader), result_callback)); |
868 | 871 |
869 return true; | 872 return true; |
870 } | 873 } |
871 | 874 |
872 void FileManagerPrivateInternalComputeChecksumFunction::Respond( | 875 void FileManagerPrivateInternalComputeChecksumFunction::Respond( |
873 const std::string& hash) { | 876 const std::string& hash) { |
874 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 877 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
875 SetResult(new base::StringValue(hash)); | 878 SetResult(new base::StringValue(hash)); |
876 SendResponse(true); | 879 SendResponse(true); |
877 } | 880 } |
878 | 881 |
879 bool FileManagerPrivateSearchFilesByHashesFunction::RunAsync() { | 882 bool FileManagerPrivateSearchFilesByHashesFunction::RunAsync() { |
880 using api::file_manager_private::SearchFilesByHashes::Params; | 883 using api::file_manager_private::SearchFilesByHashes::Params; |
881 const scoped_ptr<Params> params(Params::Create(*args_)); | 884 const std::unique_ptr<Params> params(Params::Create(*args_)); |
882 EXTENSION_FUNCTION_VALIDATE(params); | 885 EXTENSION_FUNCTION_VALIDATE(params); |
883 | 886 |
884 // TODO(hirono): Check the volume ID and fail the function for volumes other | 887 // TODO(hirono): Check the volume ID and fail the function for volumes other |
885 // than Drive. | 888 // than Drive. |
886 | 889 |
887 drive::EventLogger* const logger = | 890 drive::EventLogger* const logger = |
888 file_manager::util::GetLogger(GetProfile()); | 891 file_manager::util::GetLogger(GetProfile()); |
889 if (logger) { | 892 if (logger) { |
890 logger->Log(logging::LOG_INFO, | 893 logger->Log(logging::LOG_INFO, |
891 "%s[%d] called. (volume id: %s, number of hashes: %zd)", name(), | 894 "%s[%d] called. (volume id: %s, number of hashes: %zd)", name(), |
(...skipping 21 matching lines...) Expand all Loading... |
913 | 916 |
914 void FileManagerPrivateSearchFilesByHashesFunction::OnSearchByHashes( | 917 void FileManagerPrivateSearchFilesByHashesFunction::OnSearchByHashes( |
915 const std::set<std::string>& hashes, | 918 const std::set<std::string>& hashes, |
916 drive::FileError error, | 919 drive::FileError error, |
917 const std::vector<drive::HashAndFilePath>& search_results) { | 920 const std::vector<drive::HashAndFilePath>& search_results) { |
918 if (error != drive::FileError::FILE_ERROR_OK) { | 921 if (error != drive::FileError::FILE_ERROR_OK) { |
919 SendResponse(false); | 922 SendResponse(false); |
920 return; | 923 return; |
921 } | 924 } |
922 | 925 |
923 scoped_ptr<base::DictionaryValue> result(new base::DictionaryValue()); | 926 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue()); |
924 for (const auto& hash : hashes) { | 927 for (const auto& hash : hashes) { |
925 result->SetWithoutPathExpansion(hash, | 928 result->SetWithoutPathExpansion(hash, |
926 make_scoped_ptr(new base::ListValue())); | 929 base::WrapUnique(new base::ListValue())); |
927 } | 930 } |
928 | 931 |
929 for (const auto& hashAndPath : search_results) { | 932 for (const auto& hashAndPath : search_results) { |
930 DCHECK(result->HasKey(hashAndPath.hash)); | 933 DCHECK(result->HasKey(hashAndPath.hash)); |
931 base::ListValue* list; | 934 base::ListValue* list; |
932 result->GetListWithoutPathExpansion(hashAndPath.hash, &list); | 935 result->GetListWithoutPathExpansion(hashAndPath.hash, &list); |
933 list->AppendString( | 936 list->AppendString( |
934 file_manager::util::ConvertDrivePathToFileSystemUrl( | 937 file_manager::util::ConvertDrivePathToFileSystemUrl( |
935 GetProfile(), hashAndPath.path, extension_id()).spec()); | 938 GetProfile(), hashAndPath.path, extension_id()).spec()); |
936 } | 939 } |
937 SetResult(result.release()); | 940 SetResult(result.release()); |
938 SendResponse(true); | 941 SendResponse(true); |
939 } | 942 } |
940 | 943 |
941 ExtensionFunction::ResponseAction | 944 ExtensionFunction::ResponseAction |
942 FileManagerPrivateIsUMAEnabledFunction::Run() { | 945 FileManagerPrivateIsUMAEnabledFunction::Run() { |
943 return RespondNow(OneArgument(new base::FundamentalValue( | 946 return RespondNow(OneArgument(new base::FundamentalValue( |
944 ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled()))); | 947 ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled()))); |
945 } | 948 } |
946 | 949 |
947 FileManagerPrivateInternalSetEntryTagFunction:: | 950 FileManagerPrivateInternalSetEntryTagFunction:: |
948 FileManagerPrivateInternalSetEntryTagFunction() | 951 FileManagerPrivateInternalSetEntryTagFunction() |
949 : chrome_details_(this) {} | 952 : chrome_details_(this) {} |
950 | 953 |
951 ExtensionFunction::ResponseAction | 954 ExtensionFunction::ResponseAction |
952 FileManagerPrivateInternalSetEntryTagFunction::Run() { | 955 FileManagerPrivateInternalSetEntryTagFunction::Run() { |
953 using extensions::api::file_manager_private_internal::SetEntryTag::Params; | 956 using extensions::api::file_manager_private_internal::SetEntryTag::Params; |
954 const scoped_ptr<Params> params(Params::Create(*args_)); | 957 const std::unique_ptr<Params> params(Params::Create(*args_)); |
955 EXTENSION_FUNCTION_VALIDATE(params); | 958 EXTENSION_FUNCTION_VALIDATE(params); |
956 | 959 |
957 const base::FilePath local_path = file_manager::util::GetLocalPathFromURL( | 960 const base::FilePath local_path = file_manager::util::GetLocalPathFromURL( |
958 render_frame_host(), chrome_details_.GetProfile(), GURL(params->url)); | 961 render_frame_host(), chrome_details_.GetProfile(), GURL(params->url)); |
959 const base::FilePath drive_path = drive::util::ExtractDrivePath(local_path); | 962 const base::FilePath drive_path = drive::util::ExtractDrivePath(local_path); |
960 if (drive_path.empty()) | 963 if (drive_path.empty()) |
961 return RespondNow(Error("Only Drive files and directories are supported.")); | 964 return RespondNow(Error("Only Drive files and directories are supported.")); |
962 | 965 |
963 drive::FileSystemInterface* const file_system = | 966 drive::FileSystemInterface* const file_system = |
964 drive::util::GetFileSystemByProfile(chrome_details_.GetProfile()); | 967 drive::util::GetFileSystemByProfile(chrome_details_.GetProfile()); |
(...skipping 23 matching lines...) Expand all Loading... |
988 return RespondLater(); | 991 return RespondLater(); |
989 } | 992 } |
990 | 993 |
991 void FileManagerPrivateInternalSetEntryTagFunction::OnSetEntryPropertyCompleted( | 994 void FileManagerPrivateInternalSetEntryTagFunction::OnSetEntryPropertyCompleted( |
992 drive::FileError result) { | 995 drive::FileError result) { |
993 Respond(result == drive::FILE_ERROR_OK ? NoArguments() | 996 Respond(result == drive::FILE_ERROR_OK ? NoArguments() |
994 : Error("Failed to set a tag.")); | 997 : Error("Failed to set a tag.")); |
995 } | 998 } |
996 | 999 |
997 } // namespace extensions | 1000 } // namespace extensions |
OLD | NEW |