| Index: chrome/browser/chromeos/extensions/file_browser_event_router.cc
|
| ===================================================================
|
| --- chrome/browser/chromeos/extensions/file_browser_event_router.cc (revision 93731)
|
| +++ chrome/browser/chromeos/extensions/file_browser_event_router.cc (working copy)
|
| @@ -54,6 +54,28 @@
|
| return result;
|
| }
|
|
|
| +const char* MountErrorToString(chromeos::MountError error) {
|
| + switch (error) {
|
| + case chromeos::MOUNT_ERROR_NONE:
|
| + return "success";
|
| + case chromeos::MOUNT_ERROR_UNKNOWN:
|
| + return "error_unknown";
|
| + case chromeos::MOUNT_ERROR_INTERNAL:
|
| + return "error_internal";
|
| + case chromeos::MOUNT_ERROR_UNKNOWN_FILESYSTEM:
|
| + return "error_unknown_filesystem";
|
| + case chromeos::MOUNT_ERROR_UNSUPORTED_FILESYSTEM:
|
| + return "error_unsuported_filesystem";
|
| + case chromeos::MOUNT_ERROR_INVALID_ARCHIVE:
|
| + return "error_invalid_archive";
|
| + case chromeos::MOUNT_ERROR_LIBRARY_NOT_LOADED:
|
| + return "error_libcros_missing";
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| + return "";
|
| +}
|
| +
|
| ExtensionFileBrowserEventRouter::ExtensionFileBrowserEventRouter(
|
| Profile* profile)
|
| : delegate_(new ExtensionFileBrowserEventRouter::FileWatcherDelegate(this)),
|
| @@ -153,6 +175,13 @@
|
| }
|
| }
|
|
|
| +void ExtensionFileBrowserEventRouter::MountCompleted(
|
| + chromeos::MountLibrary::MountEvent event_type,
|
| + chromeos::MountError error_code,
|
| + const chromeos::MountLibrary::MountPointInfo& mount_info) {
|
| + DispatchMountCompletedEvent(event_type, error_code, mount_info);
|
| +}
|
| +
|
| void ExtensionFileBrowserEventRouter::HandleFileWatchNotification(
|
| const FilePath& local_path, bool got_error) {
|
| base::AutoLock lock(lock_);
|
| @@ -218,6 +247,37 @@
|
| GURL());
|
| }
|
|
|
| +void ExtensionFileBrowserEventRouter::DispatchMountCompletedEvent(
|
| + chromeos::MountLibrary::MountEvent event,
|
| + chromeos::MountError error_code,
|
| + const chromeos::MountLibrary::MountPointInfo& mount_info) {
|
| + if (!profile_ || mount_info.mount_type == chromeos::MOUNT_TYPE_INVALID) {
|
| + NOTREACHED();
|
| + return;
|
| + }
|
| +
|
| + ListValue args;
|
| + DictionaryValue* mount_info_value = new DictionaryValue();
|
| + args.Append(mount_info_value);
|
| + mount_info_value->SetString("sourcePath", mount_info.source_path);
|
| + if (event == chromeos::MountLibrary::MOUNTING) {
|
| + mount_info_value->SetString("eventType", "mount");
|
| + } else {
|
| + mount_info_value->SetString("eventType", "unmount");
|
| + }
|
| + mount_info_value->SetString("status", MountErrorToString(error_code));
|
| + chromeos::MountLibrary* lib = chromeos::CrosLibrary::Get()->GetMountLibrary();
|
| + mount_info_value->SetString("mountType",
|
| + lib->MountTypeToString(mount_info.mount_type));
|
| + mount_info_value->SetString("mountPath", mount_info.mount_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();
|
| @@ -237,7 +297,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.
|
| }
|
| }
|
|
|
|
|