Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(480)

Unified Diff: chrome/browser/chromeos/cros/mount_library.cc

Issue 7466046: Some filebrowser bugs and retiring DiskChanged event in filebrowser (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/cros/mount_library.cc
===================================================================
--- chrome/browser/chromeos/cros/mount_library.cc (revision 95171)
+++ chrome/browser/chromeos/cros/mount_library.cc (working copy)
@@ -74,9 +74,6 @@
is_read_only_(is_read_only),
has_media_(has_media),
on_boot_device_(on_boot_device) {
- // Add trailing slash to mount path.
- if (mount_path_.length() && mount_path_.at(mount_path_.length() -1) != '/')
- mount_path_ = mount_path_.append("/");
}
MountLibrary::Disk::~Disk() {}
@@ -134,15 +131,17 @@
MountSourcePath(source_path, type, options, &MountCompletedHandler, this);
}
- virtual void UnmountPath(const char* path) OVERRIDE {
+ virtual void UnmountPath(const char* mount_path) OVERRIDE {
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (!CrosLibrary::Get()->EnsureLoaded()) {
- OnUnmountPath(path,
+ OnUnmountPath(mount_path,
MOUNT_METHOD_ERROR_LOCAL,
kLibraryNotLoaded);
return;
}
- UnmountMountPoint(path, &MountLibraryImpl::UnmountMountPointCallback, this);
+
+ UnmountMountPoint(mount_path, &MountLibraryImpl::UnmountMountPointCallback,
+ this);
}
virtual void FormatUnmountedDevice(const char* file_path) OVERRIDE {
@@ -173,32 +172,31 @@
virtual void FormatMountedDevice(const char* mount_path) OVERRIDE {
DCHECK(mount_path);
- std::string device_path, file_path;
+ std::string file_path;
for (MountLibrary::DiskMap::iterator it = disks_.begin();
it != disks_.end(); ++it) {
if (it->second->mount_path().compare(mount_path) == 0) {
- device_path = it->second->device_path();
file_path = it->second->file_path();
break;
}
}
- if (device_path.empty()) {
- OnFormatDevice(device_path.c_str(),
+ if (file_path.empty()) {
+ OnFormatDevice(mount_path,
false,
MOUNT_METHOD_ERROR_LOCAL,
"Device with this mount path not found.");
return;
}
- if (formatting_pending_.find(device_path) != formatting_pending_.end()) {
- OnFormatDevice(device_path.c_str(),
+ if (formatting_pending_.find(mount_path) != formatting_pending_.end()) {
+ OnFormatDevice(mount_path,
false,
MOUNT_METHOD_ERROR_LOCAL,
"Formatting is already pending.");
return;
}
// Formatting process continues, after unmounting.
- formatting_pending_[device_path] = file_path;
- UnmountPath(device_path.c_str());
+ formatting_pending_[mount_path] = file_path;
+ UnmountPath(mount_path);
}
virtual void UnmountDeviceRecursive(const char* device_path,
@@ -215,16 +213,23 @@
// Get list of all devices to unmount.
int device_path_len = strlen(device_path);
for (DiskMap::iterator it = disks_.begin(); it != disks_.end(); ++it) {
- if (strncmp(device_path, it->second->device_path().c_str(),
- device_path_len) == 0) {
- devices_to_unmount.push_back(it->second->device_path().c_str());
+ if (!it->second->mount_path().empty() &&
+ strncmp(device_path, it->second->device_path().c_str(),
+ device_path_len) == 0) {
+ devices_to_unmount.push_back(it->second->mount_path().c_str());
}
}
// We should detect at least original device.
if (devices_to_unmount.size() == 0) {
- success = false;
- error_message = kDeviceNotFound;
+ if (disks_.find(device_path) == disks_.end()) {
+ success = false;
+ error_message = kDeviceNotFound;
+ } else {
+ // Nothing to unmount.
+ callback(user_data, true);
+ return;
+ }
}
}
@@ -280,12 +285,12 @@
// Callback for UnmountRemovableDevice method.
static void UnmountMountPointCallback(void* object,
- const char* device_path,
+ const char* mount_path,
MountMethodErrorType error,
const char* error_message) {
DCHECK(object);
MountLibraryImpl* self = static_cast<MountLibraryImpl*>(object);
- self->OnUnmountPath(device_path, error, error_message);
+ self->OnUnmountPath(mount_path, error, error_message);
}
// Callback for FormatRemovableDevice method.
@@ -301,7 +306,7 @@
// Callback for UnmountDeviceRecursive.
static void UnmountDeviceRecursiveCallback(void* object,
- const char* device_path,
+ const char* mount_path,
MountMethodErrorType error,
const char* error_message) {
DCHECK(object);
@@ -309,13 +314,13 @@
static_cast<UnmountDeviceRecursiveCallbackData*>(object);
// Do standard processing for Unmount event.
- cb_data->object->OnUnmountPath(device_path,
+ cb_data->object->OnUnmountPath(mount_path,
error,
error_message);
if (error == MOUNT_METHOD_ERROR_LOCAL) {
cb_data->success = false;
} else if (error == MOUNT_METHOD_ERROR_NONE) {
- LOG(WARNING) << device_path << " unmounted.";
+ LOG(INFO) << mount_path << " unmounted.";
}
// This is safe as long as all callbacks are called on the same thread as
@@ -370,14 +375,12 @@
const MountPointInfo& mount_info) {
DCHECK(!mount_info.source_path.empty());
- FireMountCompleted(MOUNTING,
- error_code,
- mount_info);
+ FireMountCompleted(MOUNTING, error_code, mount_info);
if (error_code == MOUNT_ERROR_NONE &&
- mount_points_.find(mount_info.source_path) == mount_points_.end()) {
+ mount_points_.find(mount_info.mount_path) == mount_points_.end()) {
mount_points_.insert(MountPointMap::value_type(
- mount_info.source_path.c_str(),
+ mount_info.mount_path.c_str(),
mount_info));
}
@@ -398,13 +401,12 @@
}
}
- void OnUnmountPath(const char* source_path,
+ void OnUnmountPath(const char* mount_path,
MountMethodErrorType error,
const char* error_message) {
- DCHECK(source_path);
-
- if (error == MOUNT_METHOD_ERROR_NONE && source_path) {
- MountPointMap::iterator mount_points_it = mount_points_.find(source_path);
+ DCHECK(mount_path);
+ if (error == MOUNT_METHOD_ERROR_NONE && mount_path) {
+ MountPointMap::iterator mount_points_it = mount_points_.find(mount_path);
if (mount_points_it == mount_points_.end())
return;
// TODO(tbarzic): Add separate, PathUnmounted event to Observer.
@@ -414,9 +416,9 @@
MountPointInfo(mount_points_it->second.source_path.c_str(),
mount_points_it->second.mount_path.c_str(),
mount_points_it->second.mount_type));
+ std::string path(mount_points_it->second.source_path);
mount_points_.erase(mount_points_it);
- std::string path(source_path);
DiskMap::iterator iter = disks_.find(path);
if (iter == disks_.end()) {
// disk might have been removed by now?
@@ -427,7 +429,7 @@
disk->clear_mount_path();
FireDiskStatusUpdate(MOUNT_DISK_UNMOUNTED, disk);
// Check if there is a formatting scheduled
- PathMap::iterator it = formatting_pending_.find(source_path);
+ PathMap::iterator it = formatting_pending_.find(mount_path);
if (it != formatting_pending_.end()) {
const std::string file_path = it->second;
formatting_pending_.erase(it);
@@ -435,7 +437,7 @@
}
} else {
LOG(WARNING) << "Unmount request failed for device "
- << source_path << ", with error: "
+ << mount_path << ", with error: "
<< (error_message ? error_message : "Unknown");
}
}
@@ -457,7 +459,6 @@
}
}
-
void OnGetDiskProperties(const char* device_path,
const DiskInfo* disk1,
MountMethodErrorType error,
@@ -691,7 +692,7 @@
virtual void RequestMountInfoRefresh() OVERRIDE {}
virtual void MountPath(const char* source_path, MountType type,
const MountPathOptions& options) OVERRIDE {}
- virtual void UnmountPath(const char* path) OVERRIDE {}
+ virtual void UnmountPath(const char* mount_path) OVERRIDE {}
virtual void FormatUnmountedDevice(const char* device_path) OVERRIDE {}
virtual void FormatMountedDevice(const char* mount_path) OVERRIDE {}
virtual void UnmountDeviceRecursive(const char* device_path,

Powered by Google App Engine
This is Rietveld 408576698