OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/drive/file_system.h" | 5 #include "chrome/browser/chromeos/drive/file_system.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/prefs/pref_service.h" | 9 #include "base/prefs/pref_service.h" |
10 #include "chrome/browser/chromeos/drive/change_list_loader.h" | 10 #include "chrome/browser/chromeos/drive/change_list_loader.h" |
11 #include "chrome/browser/chromeos/drive/directory_loader.h" | 11 #include "chrome/browser/chromeos/drive/directory_loader.h" |
12 #include "chrome/browser/chromeos/drive/drive.pb.h" | 12 #include "chrome/browser/chromeos/drive/drive.pb.h" |
13 #include "chrome/browser/chromeos/drive/file_cache.h" | 13 #include "chrome/browser/chromeos/drive/file_cache.h" |
14 #include "chrome/browser/chromeos/drive/file_change.h" | |
14 #include "chrome/browser/chromeos/drive/file_system/copy_operation.h" | 15 #include "chrome/browser/chromeos/drive/file_system/copy_operation.h" |
15 #include "chrome/browser/chromeos/drive/file_system/create_directory_operation.h " | 16 #include "chrome/browser/chromeos/drive/file_system/create_directory_operation.h " |
16 #include "chrome/browser/chromeos/drive/file_system/create_file_operation.h" | 17 #include "chrome/browser/chromeos/drive/file_system/create_file_operation.h" |
17 #include "chrome/browser/chromeos/drive/file_system/download_operation.h" | 18 #include "chrome/browser/chromeos/drive/file_system/download_operation.h" |
18 #include "chrome/browser/chromeos/drive/file_system/get_file_for_saving_operatio n.h" | 19 #include "chrome/browser/chromeos/drive/file_system/get_file_for_saving_operatio n.h" |
19 #include "chrome/browser/chromeos/drive/file_system/move_operation.h" | 20 #include "chrome/browser/chromeos/drive/file_system/move_operation.h" |
20 #include "chrome/browser/chromeos/drive/file_system/open_file_operation.h" | 21 #include "chrome/browser/chromeos/drive/file_system/open_file_operation.h" |
21 #include "chrome/browser/chromeos/drive/file_system/remove_operation.h" | 22 #include "chrome/browser/chromeos/drive/file_system/remove_operation.h" |
22 #include "chrome/browser/chromeos/drive/file_system/search_operation.h" | 23 #include "chrome/browser/chromeos/drive/file_system/search_operation.h" |
23 #include "chrome/browser/chromeos/drive/file_system/touch_operation.h" | 24 #include "chrome/browser/chromeos/drive/file_system/touch_operation.h" |
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
782 | 783 |
783 drive::internal::SearchMetadata(blocking_task_runner_, | 784 drive::internal::SearchMetadata(blocking_task_runner_, |
784 resource_metadata_, | 785 resource_metadata_, |
785 query, | 786 query, |
786 options, | 787 options, |
787 at_most_num_matches, | 788 at_most_num_matches, |
788 callback); | 789 callback); |
789 } | 790 } |
790 | 791 |
791 void FileSystem::OnDirectoryChangedByOperation( | 792 void FileSystem::OnDirectoryChangedByOperation( |
792 const base::FilePath& directory_path) { | 793 const FileChange& changed_files) { |
793 OnDirectoryChanged(directory_path); | 794 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
795 | |
796 OnDirectoryChanged(changed_files); | |
794 } | 797 } |
795 | 798 |
796 void FileSystem::OnEntryUpdatedByOperation(const std::string& local_id) { | 799 void FileSystem::OnEntryUpdatedByOperation(const std::string& local_id) { |
797 sync_client_->AddUpdateTask(ClientContext(USER_INITIATED), local_id); | 800 sync_client_->AddUpdateTask(ClientContext(USER_INITIATED), local_id); |
798 } | 801 } |
799 | 802 |
800 void FileSystem::OnDriveSyncError(file_system::DriveSyncErrorType type, | 803 void FileSystem::OnDriveSyncError(file_system::DriveSyncErrorType type, |
801 const std::string& local_id) { | 804 const std::string& local_id) { |
802 base::FilePath* file_path = new base::FilePath; | 805 base::FilePath* file_path = new base::FilePath; |
803 base::PostTaskAndReplyWithResult( | 806 base::PostTaskAndReplyWithResult( |
(...skipping 13 matching lines...) Expand all Loading... | |
817 file_system::DriveSyncErrorType type, | 820 file_system::DriveSyncErrorType type, |
818 const base::FilePath* file_path, | 821 const base::FilePath* file_path, |
819 FileError error) { | 822 FileError error) { |
820 if (error != FILE_ERROR_OK) | 823 if (error != FILE_ERROR_OK) |
821 return; | 824 return; |
822 FOR_EACH_OBSERVER(FileSystemObserver, | 825 FOR_EACH_OBSERVER(FileSystemObserver, |
823 observers_, | 826 observers_, |
824 OnDriveSyncError(type, *file_path)); | 827 OnDriveSyncError(type, *file_path)); |
825 } | 828 } |
826 | 829 |
827 void FileSystem::OnDirectoryChanged(const base::FilePath& directory_path) { | 830 void FileSystem::OnDirectoryReloaded(const base::FilePath& directory_path) { |
828 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 831 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
829 | 832 |
830 FOR_EACH_OBSERVER(FileSystemObserver, observers_, | 833 FOR_EACH_OBSERVER( |
831 OnDirectoryChanged(directory_path)); | 834 FileSystemObserver, observers_, OnDirectoryChanged(directory_path, NULL)); |
835 } | |
836 | |
837 void FileSystem::OnDirectoryChanged(const FileChange& changed_files) { | |
838 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
839 typedef std::map<base::FilePath, FileChange> FileChangeMap; | |
840 | |
841 FileChangeMap map; | |
842 const FileChange::Map& changed_file_map = changed_files.map(); | |
843 for (FileChange::Map::const_iterator it = changed_file_map.begin(); | |
844 it != changed_file_map.end(); | |
845 it++) { | |
846 const base::FilePath& path = it->first; | |
847 map[path.DirName()].Update(path, it->second); | |
848 } | |
849 | |
kinaba
2014/06/23 05:37:43
What about moving this dispatch-by-directory code
yoshiki
2014/06/24 02:02:22
Done.
| |
850 for (FileChangeMap::const_iterator it = map.begin(); it != map.end(); it++) { | |
851 FOR_EACH_OBSERVER(FileSystemObserver, | |
852 observers_, | |
853 OnDirectoryChanged(it->first, &(it->second))); | |
854 } | |
832 } | 855 } |
833 | 856 |
834 void FileSystem::OnLoadFromServerComplete() { | 857 void FileSystem::OnLoadFromServerComplete() { |
835 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 858 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
836 | 859 |
837 sync_client_->StartCheckingExistingPinnedFiles(); | 860 sync_client_->StartCheckingExistingPinnedFiles(); |
838 } | 861 } |
839 | 862 |
840 void FileSystem::OnInitialLoadComplete() { | 863 void FileSystem::OnInitialLoadComplete() { |
841 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 864 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
974 FROM_HERE, | 997 FROM_HERE, |
975 base::Bind(&GetPathFromResourceIdOnBlockingPool, | 998 base::Bind(&GetPathFromResourceIdOnBlockingPool, |
976 resource_metadata_, | 999 resource_metadata_, |
977 resource_id, | 1000 resource_id, |
978 file_path), | 1001 file_path), |
979 base::Bind(&GetPathFromResourceIdAfterGetPath, | 1002 base::Bind(&GetPathFromResourceIdAfterGetPath, |
980 base::Owned(file_path), | 1003 base::Owned(file_path), |
981 callback)); | 1004 callback)); |
982 } | 1005 } |
983 } // namespace drive | 1006 } // namespace drive |
OLD | NEW |