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 // chromeos::StorageMonitorCros implementation. | 5 // chromeos::StorageMonitorCros implementation. |
6 | 6 |
7 #include "chrome/browser/storage_monitor/storage_monitor_chromeos.h" | 7 #include "chrome/browser/storage_monitor/storage_monitor_chromeos.h" |
8 | 8 |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
205 return true; | 205 return true; |
206 } | 206 } |
207 | 207 |
208 uint64 StorageMonitorCros::GetStorageSize( | 208 uint64 StorageMonitorCros::GetStorageSize( |
209 const std::string& device_location) const { | 209 const std::string& device_location) const { |
210 MountMap::const_iterator info_it = mount_map_.find(device_location); | 210 MountMap::const_iterator info_it = mount_map_.find(device_location); |
211 return (info_it != mount_map_.end()) ? | 211 return (info_it != mount_map_.end()) ? |
212 info_it->second.total_size_in_bytes : 0; | 212 info_it->second.total_size_in_bytes : 0; |
213 } | 213 } |
214 | 214 |
215 // Callback executed when the unmount call is run by DiskMountManager. | |
216 // Forwards result to |EjectDevice| caller. | |
217 void NotifyEjectSuccess( | |
218 base::Callback<void(chrome::StorageMonitor::EjectStatus)> callback, | |
219 chromeos::MountError error_code) { | |
220 if (error_code == MOUNT_ERROR_NONE) | |
221 callback.Run(chrome::StorageMonitor::EJECT_OK); | |
222 else | |
223 callback.Run(chrome::StorageMonitor::EJECT_FAILURE); | |
224 } | |
225 | |
226 void StorageMonitorCros::EjectDevice( | |
227 const std::string& device_id, | |
228 base::Callback<void(EjectStatus)> callback) { | |
229 std::string mount_path; | |
230 for (MountMap::const_iterator info_it = mount_map_.begin(); | |
231 info_it != mount_map_.end(); ++info_it) { | |
232 if (info_it->second.device_id == device_id) | |
233 mount_path = info_it->first; | |
234 } | |
235 | |
236 if (mount_path.empty()) { | |
237 callback.Run(EJECT_NO_SUCH_DEVICE); | |
238 return; | |
239 } | |
240 | |
241 disks::DiskMountManager* manager = disks::DiskMountManager::GetInstance(); | |
242 if (!manager) { | |
243 callback.Run(EJECT_FAILURE); | |
244 return; | |
245 } | |
246 | |
247 manager->UnmountPath(mount_path, chromeos::UNMOUNT_OPTIONS_NONE, | |
248 base::Bind(NotifyEjectSuccess, callback)); | |
tbarzic
2013/03/18 19:48:26
nit: how about NotifyEjectResult
Greg Billock
2013/03/18 21:44:44
Good point. Changed to NotifyUnmountResult.
| |
249 } | |
250 | |
215 void StorageMonitorCros::CheckMountedPathOnFileThread( | 251 void StorageMonitorCros::CheckMountedPathOnFileThread( |
216 const disks::DiskMountManager::MountPointInfo& mount_info) { | 252 const disks::DiskMountManager::MountPointInfo& mount_info) { |
217 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 253 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
218 | 254 |
219 bool has_dcim = chrome::MediaStorageUtil::HasDcim(mount_info.mount_path); | 255 bool has_dcim = chrome::MediaStorageUtil::HasDcim(mount_info.mount_path); |
220 | 256 |
221 BrowserThread::PostTask( | 257 BrowserThread::PostTask( |
222 BrowserThread::UI, FROM_HERE, | 258 BrowserThread::UI, FROM_HERE, |
223 base::Bind(&StorageMonitorCros::AddMountedPathOnUIThread, this, | 259 base::Bind(&StorageMonitorCros::AddMountedPathOnUIThread, this, |
224 mount_info, has_dcim)); | 260 mount_info, has_dcim)); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
270 vendor_name, | 306 vendor_name, |
271 model_name, | 307 model_name, |
272 storage_size_in_bytes); | 308 storage_size_in_bytes); |
273 | 309 |
274 mount_map_.insert(std::make_pair(mount_info.mount_path, object_info)); | 310 mount_map_.insert(std::make_pair(mount_info.mount_path, object_info)); |
275 | 311 |
276 receiver()->ProcessAttach(object_info); | 312 receiver()->ProcessAttach(object_info); |
277 } | 313 } |
278 | 314 |
279 } // namespace chromeos | 315 } // namespace chromeos |
OLD | NEW |