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. |
} |
} |