| Index: chrome/browser/chromeos/extensions/file_browser_event_router.cc
|
| ===================================================================
|
| --- chrome/browser/chromeos/extensions/file_browser_event_router.cc (revision 93425)
|
| +++ chrome/browser/chromeos/extensions/file_browser_event_router.cc (working copy)
|
| @@ -55,6 +55,44 @@
|
| return result;
|
| }
|
|
|
| +const char* MountTypeToString(chromeos::MountType type) {
|
| + switch (type) {
|
| + case chromeos::MOUNT_TYPE_DEVICE:
|
| + return "device";
|
| + case chromeos::MOUNT_TYPE_ARCHIVE:
|
| + return "file";
|
| + case chromeos::MOUNT_TYPE_NETWORK_STORAGE:
|
| + return "network";
|
| + case chromeos::MOUNT_TYPE_INVALID:
|
| + return "invalid";
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| + return "";
|
| +}
|
| +
|
| +const char* MountErrorToString(chromeos::MountError error) {
|
| + switch (error) {
|
| + case chromeos::MOUNT_ERROR_NONE:
|
| + return "success";
|
| + case chromeos::MOUNT_ERROR_UNKNOWN:
|
| + return "unknown";
|
| + case chromeos::MOUNT_ERROR_INTERNAL:
|
| + return "internal";
|
| + case chromeos::MOUNT_ERROR_UNKNOWN_FILESYSTEM:
|
| + return "unknown_filesystem";
|
| + case chromeos::MOUNT_ERROR_UNSUPORTED_FILESYSTEM:
|
| + return "unsuported_filesystem";
|
| + case chromeos::MOUNT_ERROR_INVALID_ARCHIVE:
|
| + return "invalid_archive";
|
| + case chromeos::MOUNT_ERROR_LIBRARY_NOT_LOADED:
|
| + return "libcros_missing";
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| + return "";
|
| +}
|
| +
|
| ExtensionFileBrowserEventRouter::ExtensionFileBrowserEventRouter()
|
| : delegate_(new ExtensionFileBrowserEventRouter::FileWatcherDelegate()),
|
| profile_(NULL) {
|
| @@ -168,6 +206,14 @@
|
| }
|
| }
|
|
|
| +void ExtensionFileBrowserEventRouter::MountCompleted(
|
| + chromeos::MountError error_code,
|
| + const std::string& source_path,
|
| + chromeos::MountType type,
|
| + const std::string& mount_path) {
|
| + DispatchMountCompletedEvent(error_code, source_path, type, mount_path);
|
| +}
|
| +
|
| void ExtensionFileBrowserEventRouter::HandleFileWatchNotification(
|
| const FilePath& local_path, bool got_error) {
|
| base::AutoLock lock(lock_);
|
| @@ -233,6 +279,29 @@
|
| GURL());
|
| }
|
|
|
| +void ExtensionFileBrowserEventRouter::DispatchMountCompletedEvent(
|
| + chromeos::MountError error_code, const std::string& source_path,
|
| + chromeos::MountType type, const std::string& mount_path ) {
|
| + if (!profile_ || type == chromeos::MOUNT_TYPE_INVALID) {
|
| + NOTREACHED();
|
| + return;
|
| + }
|
| +
|
| + ListValue args;
|
| + DictionaryValue* mount_info = new DictionaryValue();
|
| + args.Append(mount_info);
|
| + mount_info->SetString("sourcePath", source_path);
|
| + mount_info->SetString("eventType", MountErrorToString(error_code));
|
| + mount_info->SetString("mountType", MountTypeToString(type));
|
| + mount_info->SetString("mountPath", mount_path);
|
| +LOG(WARNING) << "MountCompleted" << error_code << source_path;
|
| + std::string args_json;
|
| + base::JSONWriter::Write(&args, false /* pretty_print */, &args_json);
|
| + profile_->GetExtensionEventRouter()->DispatchEventToRenderers(
|
| + extension_event_names::kOnFileBrowserMountCompleted, args_json, NULL,
|
| + GURL());
|
| +}
|
| +
|
| void ExtensionFileBrowserEventRouter::OnDiskAdded(
|
| const chromeos::MountLibrary::Disk* disk) {
|
| VLOG(1) << "Disk added: " << disk->device_path();
|
| @@ -252,7 +321,9 @@
|
| // Initiate disk mount operation.
|
| chromeos::MountLibrary* lib =
|
| chromeos::CrosLibrary::Get()->GetMountLibrary();
|
| - lib->MountPath(disk->device_path().c_str());
|
| + lib->MountPath(disk->device_path().c_str(),
|
| + chromeos::MOUNT_TYPE_DEVICE,
|
| + chromeos::MountPathOptions()); // Unused.
|
| }
|
| }
|
|
|
|
|