Index: chrome/browser/extensions/extension_file_browser_private_api.cc |
=================================================================== |
--- chrome/browser/extensions/extension_file_browser_private_api.cc (revision 93731) |
+++ chrome/browser/extensions/extension_file_browser_private_api.cc (working copy) |
@@ -1075,31 +1075,141 @@ |
return true; |
} |
-UnmountVolumeFunction::UnmountVolumeFunction() { |
+AddMountFunction::AddMountFunction() { |
} |
-UnmountVolumeFunction::~UnmountVolumeFunction() { |
+AddMountFunction::~AddMountFunction() { |
} |
-bool UnmountVolumeFunction::RunImpl() { |
+bool AddMountFunction::RunImpl() { |
+ if (args_->GetSize() != 2 && args_->GetSize() != 3) { |
+ error_ = "Invalid argument count"; |
+ return false; |
+ } |
+ |
+ std::string source; |
+ if (!args_->GetString(0, &source)) { |
+ return false; |
+ } |
+ |
+ std::string mount_type_str; |
+ if (!args_->GetString(1, &mount_type_str)) { |
+ return false; |
+ } |
+ |
+#ifdef OS_CHROMEOS |
+ chromeos::MountLibrary *mount_lib = |
+ chromeos::CrosLibrary::Get()->GetMountLibrary(); |
+ |
+ chromeos::MountType mount_type = |
+ mount_lib->MountTypeFromString(mount_type_str); |
+ if (mount_type == chromeos::MOUNT_TYPE_INVALID) { |
+ error_ = "Invalid mount type"; |
+ return false; |
+ } |
+ |
+ chromeos::MountPathOptions options; |
+ |
+ if (args_->GetSize() == 3) { |
+ DictionaryValue *dict; |
+ if (!args_->GetDictionary(2, &dict)) { |
+ NOTREACHED(); |
+ } |
+ |
+ for (base::DictionaryValue::key_iterator it = dict->begin_keys(); |
+ it != dict->end_keys(); |
+ ++it) { |
+ std::string value; |
+ if (!dict->GetString(*it, &value)) { |
+ NOTREACHED(); |
+ } |
+ |
+ options.push_back(chromeos::MountPathOptions::value_type((*it).c_str(), |
+ value.c_str())); |
+ } |
+ } |
+ |
+ mount_lib->MountPath(source.c_str(), mount_type, options); |
+#endif |
+ |
+ return true; |
+} |
+ |
+RemoveMountFunction::RemoveMountFunction() { |
+} |
+ |
+RemoveMountFunction::~RemoveMountFunction() { |
+} |
+ |
+bool RemoveMountFunction::RunImpl() { |
if (args_->GetSize() != 1) { |
return false; |
} |
- std::string volume_device_path; |
- if (!args_->GetString(0, &volume_device_path)) { |
- NOTREACHED(); |
+ std::string mount_path; |
+ if (!args_->GetString(0, &mount_path)) { |
+ return false; |
} |
#ifdef OS_CHROMEOS |
chromeos::CrosLibrary::Get()->GetMountLibrary()->UnmountPath( |
- volume_device_path.c_str()); |
+ mount_path.c_str()); |
#endif |
SendResponse(true); |
return true; |
} |
+GetMountPointsFunction::GetMountPointsFunction() { |
+} |
+ |
+GetMountPointsFunction::~GetMountPointsFunction() { |
+} |
+ |
+bool GetMountPointsFunction::RunImpl() { |
+ if (args_->GetSize() != 0) |
+ return false; |
+ |
+#ifdef OS_CHROMEOS |
+ chromeos::MountLibrary *mount_lib = |
+ chromeos::CrosLibrary::Get()->GetMountLibrary(); |
+ chromeos::MountLibrary::MountPointMap mount_points = |
+ mount_lib->mount_points(); |
+ |
+ base::DictionaryValue *mounts = new base::DictionaryValue(); |
+ |
+ for (chromeos::MountLibrary::MountPointMap::const_iterator it = |
+ mount_points.begin(); |
+ it != mount_points.end(); |
+ ++it) { |
+ chromeos::MountLibrary::MountPointInfo mount_point_info = it->second; |
+ |
+ mounts->Set(mount_point_info.mount_path, |
+ MountPointToValue(mount_point_info, mount_lib)); |
+ } |
+ |
+ result_.reset(mounts); |
+#endif |
+ |
+ return true; |
+} |
+ |
+#ifdef OS_CHROMEOS |
+base::DictionaryValue* GetMountPointsFunction::MountPointToValue( |
+ const chromeos::MountLibrary::MountPointInfo& mount_point_info, |
+ chromeos::MountLibrary* mount_lib) { |
+ |
+ base::DictionaryValue *mount_info = new base::DictionaryValue(); |
+ |
+ mount_info->SetString("mountPath", mount_point_info.mount_path); |
+ mount_info->SetString( |
+ "mountType", |
+ mount_lib->MountTypeToString(mount_point_info.mount_type)); |
+ mount_info->SetString("sourcePath", mount_point_info.source_path); |
+ return mount_info; |
+} |
+#endif |
+ |
GetVolumeMetadataFunction::GetVolumeMetadataFunction() { |
} |