| 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_util.h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 | 46 |
| 47 // The callback type for GetFileNativeLocalPathFor{Opening,Saving}. It receives | 47 // The callback type for GetFileNativeLocalPathFor{Opening,Saving}. It receives |
| 48 // the resolved local path when successful, and receives empty path for failure. | 48 // the resolved local path when successful, and receives empty path for failure. |
| 49 typedef base::Callback<void(const base::FilePath&)> LocalPathCallback; | 49 typedef base::Callback<void(const base::FilePath&)> LocalPathCallback; |
| 50 | 50 |
| 51 // Converts a callback from Drive file system to LocalPathCallback. | 51 // Converts a callback from Drive file system to LocalPathCallback. |
| 52 void OnDriveGetFile(const base::FilePath& path, | 52 void OnDriveGetFile(const base::FilePath& path, |
| 53 const LocalPathCallback& callback, | 53 const LocalPathCallback& callback, |
| 54 drive::FileError error, | 54 drive::FileError error, |
| 55 const base::FilePath& local_file_path, | 55 const base::FilePath& local_file_path, |
| 56 scoped_ptr<drive::ResourceEntry> entry) { | 56 std::unique_ptr<drive::ResourceEntry> entry) { |
| 57 if (error != drive::FILE_ERROR_OK) | 57 if (error != drive::FILE_ERROR_OK) |
| 58 DLOG(ERROR) << "Failed to get " << path.value() << " with: " << error; | 58 DLOG(ERROR) << "Failed to get " << path.value() << " with: " << error; |
| 59 callback.Run(local_file_path); | 59 callback.Run(local_file_path); |
| 60 } | 60 } |
| 61 | 61 |
| 62 // Gets a resolved local file path of a non native |path| for file opening. | 62 // Gets a resolved local file path of a non native |path| for file opening. |
| 63 void GetFileNativeLocalPathForOpening(Profile* profile, | 63 void GetFileNativeLocalPathForOpening(Profile* profile, |
| 64 const base::FilePath& path, | 64 const base::FilePath& path, |
| 65 const LocalPathCallback& callback) { | 65 const LocalPathCallback& callback) { |
| 66 if (drive::util::IsUnderDriveMountPoint(path)) { | 66 if (drive::util::IsUnderDriveMountPoint(path)) { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 96 base::Bind(&OnDriveGetFile, path, callback)); | 96 base::Bind(&OnDriveGetFile, path, callback)); |
| 97 return; | 97 return; |
| 98 } | 98 } |
| 99 | 99 |
| 100 // TODO(kinaba): For now, the only writable non-local volume is Drive. | 100 // TODO(kinaba): For now, the only writable non-local volume is Drive. |
| 101 NOTREACHED(); | 101 NOTREACHED(); |
| 102 callback.Run(base::FilePath()); | 102 callback.Run(base::FilePath()); |
| 103 } | 103 } |
| 104 | 104 |
| 105 // Forward declarations of helper functions for GetSelectedFileInfo(). | 105 // Forward declarations of helper functions for GetSelectedFileInfo(). |
| 106 void ContinueGetSelectedFileInfo(Profile* profile, | 106 void ContinueGetSelectedFileInfo( |
| 107 scoped_ptr<GetSelectedFileInfoParams> params, | 107 Profile* profile, |
| 108 const base::FilePath& local_file_path); | 108 std::unique_ptr<GetSelectedFileInfoParams> params, |
| 109 const base::FilePath& local_file_path); |
| 109 | 110 |
| 110 // Part of GetSelectedFileInfo(). | 111 // Part of GetSelectedFileInfo(). |
| 111 void GetSelectedFileInfoInternal(Profile* profile, | 112 void GetSelectedFileInfoInternal( |
| 112 scoped_ptr<GetSelectedFileInfoParams> params) { | 113 Profile* profile, |
| 114 std::unique_ptr<GetSelectedFileInfoParams> params) { |
| 113 DCHECK(profile); | 115 DCHECK(profile); |
| 114 | 116 |
| 115 for (size_t i = params->selected_files.size(); | 117 for (size_t i = params->selected_files.size(); |
| 116 i < params->file_paths.size(); ++i) { | 118 i < params->file_paths.size(); ++i) { |
| 117 const base::FilePath& file_path = params->file_paths[i]; | 119 const base::FilePath& file_path = params->file_paths[i]; |
| 118 | 120 |
| 119 if (file_manager::util::IsUnderNonNativeLocalPath(profile, file_path)) { | 121 if (file_manager::util::IsUnderNonNativeLocalPath(profile, file_path)) { |
| 120 // When the caller of the select file dialog wants local file paths, and | 122 // When the caller of the select file dialog wants local file paths, and |
| 121 // the selected path does not point to a native local path (e.g., Drive, | 123 // the selected path does not point to a native local path (e.g., Drive, |
| 122 // MTP, or provided file system), we should resolve the path. | 124 // MTP, or provided file system), we should resolve the path. |
| (...skipping 22 matching lines...) Expand all Loading... |
| 145 } | 147 } |
| 146 } else { | 148 } else { |
| 147 params->selected_files.push_back( | 149 params->selected_files.push_back( |
| 148 ui::SelectedFileInfo(file_path, file_path)); | 150 ui::SelectedFileInfo(file_path, file_path)); |
| 149 } | 151 } |
| 150 } | 152 } |
| 151 params->callback.Run(params->selected_files); | 153 params->callback.Run(params->selected_files); |
| 152 } | 154 } |
| 153 | 155 |
| 154 // Part of GetSelectedFileInfo(). | 156 // Part of GetSelectedFileInfo(). |
| 155 void ContinueGetSelectedFileInfo(Profile* profile, | 157 void ContinueGetSelectedFileInfo( |
| 156 scoped_ptr<GetSelectedFileInfoParams> params, | 158 Profile* profile, |
| 157 const base::FilePath& local_path) { | 159 std::unique_ptr<GetSelectedFileInfoParams> params, |
| 160 const base::FilePath& local_path) { |
| 158 if (local_path.empty()) { | 161 if (local_path.empty()) { |
| 159 params->callback.Run(std::vector<ui::SelectedFileInfo>()); | 162 params->callback.Run(std::vector<ui::SelectedFileInfo>()); |
| 160 return; | 163 return; |
| 161 } | 164 } |
| 162 const int index = params->selected_files.size(); | 165 const int index = params->selected_files.size(); |
| 163 const base::FilePath& file_path = params->file_paths[index]; | 166 const base::FilePath& file_path = params->file_paths[index]; |
| 164 params->selected_files.push_back(ui::SelectedFileInfo(file_path, local_path)); | 167 params->selected_files.push_back(ui::SelectedFileInfo(file_path, local_path)); |
| 165 GetSelectedFileInfoInternal(profile, std::move(params)); | 168 GetSelectedFileInfoInternal(profile, std::move(params)); |
| 166 } | 169 } |
| 167 | 170 |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 } | 326 } |
| 324 | 327 |
| 325 void GetSelectedFileInfo(content::RenderFrameHost* render_frame_host, | 328 void GetSelectedFileInfo(content::RenderFrameHost* render_frame_host, |
| 326 Profile* profile, | 329 Profile* profile, |
| 327 const std::vector<GURL>& file_urls, | 330 const std::vector<GURL>& file_urls, |
| 328 GetSelectedFileInfoLocalPathOption local_path_option, | 331 GetSelectedFileInfoLocalPathOption local_path_option, |
| 329 GetSelectedFileInfoCallback callback) { | 332 GetSelectedFileInfoCallback callback) { |
| 330 DCHECK(render_frame_host); | 333 DCHECK(render_frame_host); |
| 331 DCHECK(profile); | 334 DCHECK(profile); |
| 332 | 335 |
| 333 scoped_ptr<GetSelectedFileInfoParams> params(new GetSelectedFileInfoParams); | 336 std::unique_ptr<GetSelectedFileInfoParams> params( |
| 337 new GetSelectedFileInfoParams); |
| 334 params->local_path_option = local_path_option; | 338 params->local_path_option = local_path_option; |
| 335 params->callback = callback; | 339 params->callback = callback; |
| 336 | 340 |
| 337 for (size_t i = 0; i < file_urls.size(); ++i) { | 341 for (size_t i = 0; i < file_urls.size(); ++i) { |
| 338 const GURL& file_url = file_urls[i]; | 342 const GURL& file_url = file_urls[i]; |
| 339 const base::FilePath path = GetLocalPathFromURL( | 343 const base::FilePath path = GetLocalPathFromURL( |
| 340 render_frame_host, profile, file_url); | 344 render_frame_host, profile, file_url); |
| 341 if (!path.empty()) { | 345 if (!path.empty()) { |
| 342 DVLOG(1) << "Selected: file path: " << path.value(); | 346 DVLOG(1) << "Selected: file path: " << path.value(); |
| 343 params->file_paths.push_back(path); | 347 params->file_paths.push_back(path); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 362 } | 366 } |
| 363 | 367 |
| 364 drive::EventLogger* GetLogger(Profile* profile) { | 368 drive::EventLogger* GetLogger(Profile* profile) { |
| 365 drive::DriveIntegrationService* service = | 369 drive::DriveIntegrationService* service = |
| 366 drive::DriveIntegrationServiceFactory::FindForProfile(profile); | 370 drive::DriveIntegrationServiceFactory::FindForProfile(profile); |
| 367 return service ? service->event_logger() : NULL; | 371 return service ? service->event_logger() : NULL; |
| 368 } | 372 } |
| 369 | 373 |
| 370 } // namespace util | 374 } // namespace util |
| 371 } // namespace file_manager | 375 } // namespace file_manager |
| OLD | NEW |