Chromium Code Reviews| 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_) { |
| + 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; |
|
tbarzic
2011/07/22 03:13:24
to be removed before landing.
|
| + 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. |
| } |
| } |