Chromium Code Reviews| 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/gdata/gdata_file_system.h" | 5 #include "chrome/browser/chromeos/gdata/gdata_file_system.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 1111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1122 FilePath new_file(file_name); | 1122 FilePath new_file(file_name); |
| 1123 if (new_file.Extension() == | 1123 if (new_file.Extension() == |
| 1124 entry_proto->file_specific_info().document_extension()) { | 1124 entry_proto->file_specific_info().document_extension()) { |
| 1125 file_name = new_file.RemoveExtension().value(); | 1125 file_name = new_file.RemoveExtension().value(); |
| 1126 } | 1126 } |
| 1127 } | 1127 } |
| 1128 | 1128 |
| 1129 documents_service_->RenameResource( | 1129 documents_service_->RenameResource( |
| 1130 GURL(entry_proto->edit_url()), | 1130 GURL(entry_proto->edit_url()), |
| 1131 file_name, | 1131 file_name, |
| 1132 base::Bind(&GDataFileSystem::RenameFileOnFileSystem, | 1132 base::Bind(&GDataFileSystem::RenameFileOnClientSide, |
| 1133 ui_weak_ptr_, | 1133 ui_weak_ptr_, |
| 1134 file_path, | 1134 file_path, |
| 1135 file_name, | 1135 file_name, |
| 1136 callback)); | 1136 callback)); |
| 1137 } | 1137 } |
| 1138 | 1138 |
| 1139 void GDataFileSystem::Move(const FilePath& src_file_path, | 1139 void GDataFileSystem::Move(const FilePath& src_file_path, |
| 1140 const FilePath& dest_file_path, | 1140 const FilePath& dest_file_path, |
| 1141 const FileOperationCallback& callback) { | 1141 const FileOperationCallback& callback) { |
| 1142 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || | 1142 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1210 // 3. Adds the file to the parent directory of |dest_file_path|, which | 1210 // 3. Adds the file to the parent directory of |dest_file_path|, which |
| 1211 // effectively moves the file from the root directory to the parent | 1211 // effectively moves the file from the root directory to the parent |
| 1212 // directory of |dest_file_path|. | 1212 // directory of |dest_file_path|. |
| 1213 FileMoveCallback add_file_to_directory_callback = | 1213 FileMoveCallback add_file_to_directory_callback = |
| 1214 base::Bind(&GDataFileSystem::MoveEntryFromRootDirectory, | 1214 base::Bind(&GDataFileSystem::MoveEntryFromRootDirectory, |
| 1215 ui_weak_ptr_, | 1215 ui_weak_ptr_, |
| 1216 dest_file_path.DirName(), | 1216 dest_file_path.DirName(), |
| 1217 callback); | 1217 callback); |
| 1218 | 1218 |
| 1219 FileMoveCallback remove_file_from_directory_callback = | 1219 FileMoveCallback remove_file_from_directory_callback = |
| 1220 base::Bind(&GDataFileSystem::RemoveEntryFromDirectory, | 1220 base::Bind(&GDataFileSystem::RemoveEntryFromNonRootDirectory, |
| 1221 ui_weak_ptr_, | 1221 ui_weak_ptr_, |
| 1222 src_file_path.DirName(), | |
| 1223 add_file_to_directory_callback); | 1222 add_file_to_directory_callback); |
| 1224 | 1223 |
| 1225 Rename(src_file_path, dest_file_path.BaseName().value(), | 1224 Rename(src_file_path, dest_file_path.BaseName().value(), |
| 1226 remove_file_from_directory_callback); | 1225 remove_file_from_directory_callback); |
| 1227 } | 1226 } |
| 1228 | 1227 |
| 1229 void GDataFileSystem::MoveEntryFromRootDirectory( | 1228 void GDataFileSystem::MoveEntryFromRootDirectory( |
| 1230 const FilePath& dir_path, | 1229 const FilePath& dir_path, |
| 1231 const FileOperationCallback& callback, | 1230 const FileOperationCallback& callback, |
| 1232 GDataFileError error, | 1231 GDataFileError error, |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1278 documents_service_->AddResourceToDirectory( | 1277 documents_service_->AddResourceToDirectory( |
| 1279 GURL(dir_proto->content_url()), | 1278 GURL(dir_proto->content_url()), |
| 1280 GURL(src_proto->edit_url()), | 1279 GURL(src_proto->edit_url()), |
| 1281 base::Bind(&GDataFileSystem::OnMoveEntryFromRootDirectoryCompleted, | 1280 base::Bind(&GDataFileSystem::OnMoveEntryFromRootDirectoryCompleted, |
| 1282 ui_weak_ptr_, | 1281 ui_weak_ptr_, |
| 1283 callback, | 1282 callback, |
| 1284 file_path, | 1283 file_path, |
| 1285 dir_path)); | 1284 dir_path)); |
| 1286 } | 1285 } |
| 1287 | 1286 |
| 1288 void GDataFileSystem::RemoveEntryFromDirectory( | 1287 void GDataFileSystem::RemoveEntryFromNonRootDirectory( |
| 1289 const FilePath& dir_path, | |
| 1290 const FileMoveCallback& callback, | 1288 const FileMoveCallback& callback, |
| 1291 GDataFileError error, | 1289 GDataFileError error, |
| 1292 const FilePath& file_path) { | 1290 const FilePath& file_path) { |
| 1293 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1291 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1292 DCHECK(!callback.is_null()); | |
| 1294 | 1293 |
| 1294 const FilePath& dir_path = file_path.DirName(); | |
|
achuithb
2012/08/10 08:59:13
Can't use a const reference to a temporary.
satorux1
2012/08/10 15:56:03
Good catch! Done.
| |
| 1295 GDataEntry* entry = directory_service_->FindEntryByPathSync(file_path); | 1295 GDataEntry* entry = directory_service_->FindEntryByPathSync(file_path); |
| 1296 GDataEntry* dir = directory_service_->FindEntryByPathSync(dir_path); | 1296 GDataEntry* dir = directory_service_->FindEntryByPathSync(dir_path); |
| 1297 if (error == GDATA_FILE_OK) { | 1297 if (error == GDATA_FILE_OK) { |
| 1298 if (!entry || !dir) { | 1298 if (!entry || !dir) { |
| 1299 error = GDATA_FILE_ERROR_NOT_FOUND; | 1299 error = GDATA_FILE_ERROR_NOT_FOUND; |
| 1300 } else { | 1300 } else { |
| 1301 if (!dir->AsGDataDirectory()) | 1301 if (!dir->AsGDataDirectory()) |
| 1302 error = GDATA_FILE_ERROR_NOT_A_DIRECTORY; | 1302 error = GDATA_FILE_ERROR_NOT_A_DIRECTORY; |
| 1303 } | 1303 } |
| 1304 } | 1304 } |
| 1305 | 1305 |
| 1306 // Returns if there is an error or |dir_path| is the root directory. | 1306 // Returns if there is an error or |dir_path| is the root directory. |
| 1307 if (error != GDATA_FILE_OK || | 1307 if (error != GDATA_FILE_OK || |
| 1308 dir->resource_id() == kGDataRootDirectoryResourceId) { | 1308 dir->resource_id() == kGDataRootDirectoryResourceId) { |
| 1309 if (!callback.is_null()) { | 1309 callback.Run(error, file_path); |
| 1310 MessageLoop::current()->PostTask(FROM_HERE, | |
| 1311 base::Bind(callback, error, file_path)); | |
| 1312 } | |
| 1313 return; | 1310 return; |
| 1314 } | 1311 } |
| 1315 | 1312 |
| 1316 documents_service_->RemoveResourceFromDirectory( | 1313 documents_service_->RemoveResourceFromDirectory( |
| 1317 dir->content_url(), | 1314 dir->content_url(), |
| 1318 entry->edit_url(), | 1315 entry->edit_url(), |
| 1319 entry->resource_id(), | 1316 entry->resource_id(), |
| 1320 base::Bind(&GDataFileSystem::RemoveEntryFromDirectoryOnFileSystem, | 1317 base::Bind(&GDataFileSystem::MoveEntryToRootDirectoryOnClientSide, |
| 1321 ui_weak_ptr_, | 1318 ui_weak_ptr_, |
| 1322 callback, | 1319 callback, |
| 1323 file_path, | 1320 file_path, |
| 1324 dir_path)); | 1321 dir_path)); |
| 1325 } | 1322 } |
| 1326 | 1323 |
| 1327 void GDataFileSystem::Remove(const FilePath& file_path, | 1324 void GDataFileSystem::Remove(const FilePath& file_path, |
| 1328 bool is_recursive, | 1325 bool is_recursive, |
| 1329 const FileOperationCallback& callback) { | 1326 const FileOperationCallback& callback) { |
| 1330 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || | 1327 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || |
| (...skipping 1197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2528 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2525 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2529 DCHECK(!callback.is_null()); | 2526 DCHECK(!callback.is_null()); |
| 2530 | 2527 |
| 2531 GDataFileError error = util::GDataToGDataFileError(status); | 2528 GDataFileError error = util::GDataToGDataFileError(status); |
| 2532 if (error == GDATA_FILE_OK) { | 2529 if (error == GDATA_FILE_OK) { |
| 2533 GDataEntry* entry = directory_service_->FindEntryByPathSync(file_path); | 2530 GDataEntry* entry = directory_service_->FindEntryByPathSync(file_path); |
| 2534 if (entry) { | 2531 if (entry) { |
| 2535 DCHECK_EQ(directory_service_->root(), entry->parent()); | 2532 DCHECK_EQ(directory_service_->root(), entry->parent()); |
| 2536 directory_service_->MoveEntryToDirectory(dir_path, entry, | 2533 directory_service_->MoveEntryToDirectory(dir_path, entry, |
| 2537 base::Bind( | 2534 base::Bind( |
| 2538 &GDataFileSystem::OnMoveEntryToDirectoryWithFileOperationCallback, | 2535 &GDataFileSystem::NotifyAndRunFileOperationCallback, |
| 2539 ui_weak_ptr_, | 2536 ui_weak_ptr_, |
| 2540 callback)); | 2537 callback)); |
| 2541 return; | 2538 return; |
| 2542 } else { | 2539 } else { |
| 2543 error = GDATA_FILE_ERROR_NOT_FOUND; | 2540 error = GDATA_FILE_ERROR_NOT_FOUND; |
| 2544 } | 2541 } |
| 2545 } | 2542 } |
| 2546 | 2543 |
| 2547 callback.Run(error); | 2544 callback.Run(error); |
| 2548 } | 2545 } |
| 2549 | 2546 |
| 2550 void GDataFileSystem::OnRemovedDocument( | 2547 void GDataFileSystem::OnRemovedDocument( |
| 2551 const FileOperationCallback& callback, | 2548 const FileOperationCallback& callback, |
| 2552 const FilePath& file_path, | 2549 const FilePath& file_path, |
| 2553 GDataErrorCode status, | 2550 GDataErrorCode status, |
| 2554 const GURL& document_url) { | 2551 const GURL& document_url) { |
| 2555 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2552 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2556 | 2553 |
| 2557 GDataFileError error = util::GDataToGDataFileError(status); | 2554 GDataFileError error = util::GDataToGDataFileError(status); |
| 2558 | 2555 |
| 2559 if (error == GDATA_FILE_OK) | 2556 if (error == GDATA_FILE_OK) |
| 2560 error = RemoveEntryFromFileSystem(file_path); | 2557 error = RemoveEntryOnClientSide(file_path); |
| 2561 | 2558 |
| 2562 if (!callback.is_null()) { | 2559 if (!callback.is_null()) { |
| 2563 callback.Run(error); | 2560 callback.Run(error); |
| 2564 } | 2561 } |
| 2565 } | 2562 } |
| 2566 | 2563 |
| 2567 void GDataFileSystem::OnFileDownloaded( | 2564 void GDataFileSystem::OnFileDownloaded( |
| 2568 const GetFileFromCacheParams& params, | 2565 const GetFileFromCacheParams& params, |
| 2569 GDataErrorCode status, | 2566 GDataErrorCode status, |
| 2570 const GURL& content_url, | 2567 const GURL& content_url, |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2663 } | 2660 } |
| 2664 } | 2661 } |
| 2665 | 2662 |
| 2666 void GDataFileSystem::OnDownloadStoredToCache(GDataFileError error, | 2663 void GDataFileSystem::OnDownloadStoredToCache(GDataFileError error, |
| 2667 const std::string& resource_id, | 2664 const std::string& resource_id, |
| 2668 const std::string& md5) { | 2665 const std::string& md5) { |
| 2669 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2666 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2670 // Nothing much to do here for now. | 2667 // Nothing much to do here for now. |
| 2671 } | 2668 } |
| 2672 | 2669 |
| 2673 void GDataFileSystem::RenameFileOnFileSystem( | 2670 void GDataFileSystem::RenameFileOnClientSide( |
| 2674 const FilePath& file_path, | 2671 const FilePath& file_path, |
| 2675 const FilePath::StringType& new_name, | 2672 const FilePath::StringType& new_name, |
| 2676 const FileMoveCallback& callback, | 2673 const FileMoveCallback& callback, |
| 2677 GDataErrorCode status, | 2674 GDataErrorCode status, |
| 2678 const GURL& document_url) { | 2675 const GURL& document_url) { |
| 2679 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2676 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2680 | 2677 |
| 2681 const GDataFileError error = util::GDataToGDataFileError(status); | 2678 const GDataFileError error = util::GDataToGDataFileError(status); |
| 2682 if (error != GDATA_FILE_OK) { | 2679 if (error != GDATA_FILE_OK) { |
| 2683 if (!callback.is_null()) | 2680 if (!callback.is_null()) |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 2697 // After changing the title of the entry, call MoveEntryToDirectory() to | 2694 // After changing the title of the entry, call MoveEntryToDirectory() to |
| 2698 // remove the entry from its parent directory and then add it back in order to | 2695 // remove the entry from its parent directory and then add it back in order to |
| 2699 // go through the file name de-duplication. | 2696 // go through the file name de-duplication. |
| 2700 // TODO(achuith/satorux/zel): This code is fragile. The title has been | 2697 // TODO(achuith/satorux/zel): This code is fragile. The title has been |
| 2701 // changed, but not the file_name. MoveEntryToDirectory calls RemoveChild to | 2698 // changed, but not the file_name. MoveEntryToDirectory calls RemoveChild to |
| 2702 // remove the child based on the old file_name, and then re-adds the child by | 2699 // remove the child based on the old file_name, and then re-adds the child by |
| 2703 // first assigning the new title to file_name. http://crbug.com/30157 | 2700 // first assigning the new title to file_name. http://crbug.com/30157 |
| 2704 directory_service_->MoveEntryToDirectory( | 2701 directory_service_->MoveEntryToDirectory( |
| 2705 entry->parent()->GetFilePath(), | 2702 entry->parent()->GetFilePath(), |
| 2706 entry, | 2703 entry, |
| 2707 base::Bind(&GDataFileSystem::OnMoveEntryToDirectoryWithFileMoveCallback, | 2704 base::Bind(&GDataFileSystem::NotifyAndRunFileMoveCallback, |
| 2708 ui_weak_ptr_, | 2705 ui_weak_ptr_, |
| 2709 callback)); | 2706 callback)); |
| 2710 } | 2707 } |
| 2711 | 2708 |
| 2712 void GDataFileSystem::RemoveEntryFromDirectoryOnFileSystem( | 2709 void GDataFileSystem::MoveEntryToRootDirectoryOnClientSide( |
| 2713 const FileMoveCallback& callback, | 2710 const FileMoveCallback& callback, |
| 2714 const FilePath& file_path, | 2711 const FilePath& file_path, |
| 2715 const FilePath& dir_path, | 2712 const FilePath& dir_path, |
| 2716 GDataErrorCode status, | 2713 GDataErrorCode status, |
| 2717 const GURL& document_url) { | 2714 const GURL& document_url) { |
| 2718 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2715 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2716 DCHECK(!callback.is_null()); | |
| 2719 | 2717 |
| 2720 const GDataFileError error = util::GDataToGDataFileError(status); | 2718 const GDataFileError error = util::GDataToGDataFileError(status); |
| 2721 if (error != GDATA_FILE_OK) { | 2719 if (error != GDATA_FILE_OK) { |
| 2722 if (!callback.is_null()) | 2720 callback.Run(error, FilePath()); |
| 2723 callback.Run(error, FilePath()); | |
| 2724 return; | 2721 return; |
| 2725 } | 2722 } |
| 2726 | 2723 |
| 2727 GDataEntry* entry = directory_service_->FindEntryByPathSync(file_path); | 2724 GDataEntry* entry = directory_service_->FindEntryByPathSync(file_path); |
| 2728 if (!entry) { | 2725 if (!entry) { |
| 2729 if (!callback.is_null()) | 2726 callback.Run(GDATA_FILE_ERROR_NOT_FOUND, FilePath()); |
| 2730 callback.Run(GDATA_FILE_ERROR_NOT_FOUND, FilePath()); | |
| 2731 return; | 2727 return; |
| 2732 } | 2728 } |
| 2733 | 2729 |
| 2734 directory_service_->MoveEntryToDirectory( | 2730 directory_service_->MoveEntryToDirectory( |
| 2735 directory_service_->root()->GetFilePath(), | 2731 directory_service_->root()->GetFilePath(), |
| 2736 entry, | 2732 entry, |
| 2737 base::Bind(&GDataFileSystem::OnMoveEntryToDirectoryWithFileMoveCallback, | 2733 base::Bind(&GDataFileSystem::NotifyAndRunFileMoveCallback, |
| 2738 ui_weak_ptr_, | 2734 ui_weak_ptr_, |
| 2739 callback)); | 2735 callback)); |
| 2740 } | 2736 } |
| 2741 | 2737 |
| 2742 void GDataFileSystem::OnMoveEntryToDirectoryWithFileMoveCallback( | 2738 void GDataFileSystem::NotifyAndRunFileMoveCallback( |
| 2743 const FileMoveCallback& callback, | 2739 const FileMoveCallback& callback, |
| 2744 GDataFileError error, | 2740 GDataFileError error, |
| 2745 const FilePath& moved_file_path) { | 2741 const FilePath& moved_file_path) { |
| 2742 DCHECK(!callback.is_null()); | |
|
achuithb
2012/08/10 08:59:13
I believe this happens on the UI thread? Can we ad
satorux1
2012/08/10 15:56:03
Done.
| |
| 2743 | |
| 2746 if (error == GDATA_FILE_OK) | 2744 if (error == GDATA_FILE_OK) |
| 2747 OnDirectoryChanged(moved_file_path.DirName()); | 2745 OnDirectoryChanged(moved_file_path.DirName()); |
| 2748 | 2746 |
| 2749 if (!callback.is_null()) | 2747 callback.Run(error, moved_file_path); |
| 2750 callback.Run(error, moved_file_path); | |
| 2751 } | 2748 } |
| 2752 | 2749 |
| 2753 void GDataFileSystem::OnMoveEntryToDirectoryWithFileOperationCallback( | 2750 void GDataFileSystem::NotifyAndRunFileOperationCallback( |
| 2754 const FileOperationCallback& callback, | 2751 const FileOperationCallback& callback, |
| 2755 GDataFileError error, | 2752 GDataFileError error, |
| 2756 const FilePath& moved_file_path) { | 2753 const FilePath& moved_file_path) { |
| 2757 DCHECK(!callback.is_null()); | 2754 DCHECK(!callback.is_null()); |
|
achuithb
2012/08/10 08:59:13
Can we add a UI thread DCHECK here?
satorux1
2012/08/10 15:56:03
Done.
| |
| 2758 | 2755 |
| 2759 if (error == GDATA_FILE_OK) | 2756 if (error == GDATA_FILE_OK) |
| 2760 OnDirectoryChanged(moved_file_path.DirName()); | 2757 OnDirectoryChanged(moved_file_path.DirName()); |
| 2761 | 2758 |
| 2762 callback.Run(error); | 2759 callback.Run(error); |
| 2763 } | 2760 } |
| 2764 | 2761 |
| 2765 GDataFileError GDataFileSystem::RemoveEntryFromFileSystem( | 2762 GDataFileError GDataFileSystem::RemoveEntryOnClientSide( |
| 2766 const FilePath& file_path) { | 2763 const FilePath& file_path) { |
| 2767 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2764 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2768 | 2765 |
| 2769 std::string resource_id; | 2766 std::string resource_id; |
| 2770 GDataFileError error = RemoveEntryFromGData(file_path, &resource_id); | 2767 GDataFileError error = RemoveEntryOnClientSide(file_path, &resource_id); |
| 2771 if (error != GDATA_FILE_OK) | 2768 if (error != GDATA_FILE_OK) |
| 2772 return error; | 2769 return error; |
| 2773 | 2770 |
| 2774 // If resource_id is not empty, remove its corresponding file from cache. | 2771 // If resource_id is not empty, remove its corresponding file from cache. |
| 2775 if (!resource_id.empty()) | 2772 if (!resource_id.empty()) |
| 2776 cache_->RemoveOnUIThread(resource_id, CacheOperationCallback()); | 2773 cache_->RemoveOnUIThread(resource_id, CacheOperationCallback()); |
| 2777 | 2774 |
| 2778 return GDATA_FILE_OK; | 2775 return GDATA_FILE_OK; |
| 2779 } | 2776 } |
| 2780 | 2777 |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2886 return FOUND_INVALID; | 2883 return FOUND_INVALID; |
| 2887 } | 2884 } |
| 2888 } else { | 2885 } else { |
| 2889 *first_missing_parent_path = current_path; | 2886 *first_missing_parent_path = current_path; |
| 2890 return FOUND_MISSING; | 2887 return FOUND_MISSING; |
| 2891 } | 2888 } |
| 2892 } | 2889 } |
| 2893 return DIRECTORY_ALREADY_PRESENT; | 2890 return DIRECTORY_ALREADY_PRESENT; |
| 2894 } | 2891 } |
| 2895 | 2892 |
| 2896 GDataFileError GDataFileSystem::RemoveEntryFromGData( | 2893 GDataFileError GDataFileSystem::RemoveEntryOnClientSide( |
| 2897 const FilePath& file_path, std::string* resource_id) { | 2894 const FilePath& file_path, std::string* resource_id) { |
| 2898 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2895 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2899 | 2896 |
| 2900 resource_id->clear(); | 2897 resource_id->clear(); |
| 2901 | 2898 |
| 2902 // Find directory element within the cached file system snapshot. | 2899 // Find directory element within the cached file system snapshot. |
| 2903 GDataEntry* entry = directory_service_->FindEntryByPathSync(file_path); | 2900 GDataEntry* entry = directory_service_->FindEntryByPathSync(file_path); |
| 2904 | 2901 |
| 2905 if (!entry) | 2902 if (!entry) |
| 2906 return GDATA_FILE_ERROR_NOT_FOUND; | 2903 return GDATA_FILE_ERROR_NOT_FOUND; |
| (...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3471 } | 3468 } |
| 3472 | 3469 |
| 3473 PlatformFileInfoProto entry_file_info; | 3470 PlatformFileInfoProto entry_file_info; |
| 3474 GDataEntry::ConvertPlatformFileInfoToProto(*file_info, &entry_file_info); | 3471 GDataEntry::ConvertPlatformFileInfoToProto(*file_info, &entry_file_info); |
| 3475 *entry_proto->mutable_file_info() = entry_file_info; | 3472 *entry_proto->mutable_file_info() = entry_file_info; |
| 3476 if (!callback.is_null()) | 3473 if (!callback.is_null()) |
| 3477 callback.Run(GDATA_FILE_OK, entry_proto.Pass()); | 3474 callback.Run(GDATA_FILE_OK, entry_proto.Pass()); |
| 3478 } | 3475 } |
| 3479 | 3476 |
| 3480 } // namespace gdata | 3477 } // namespace gdata |
| OLD | NEW |