| Index: chrome/browser/chromeos/file_system_provider/provided_file_system.cc | 
| diff --git a/chrome/browser/chromeos/file_system_provider/provided_file_system.cc b/chrome/browser/chromeos/file_system_provider/provided_file_system.cc | 
| index 93a9bd25b6249c54c9988d86eb616baade190db9..5b39f3309e0249081a1c87d4b4e2f5ff0e2ad024 100644 | 
| --- a/chrome/browser/chromeos/file_system_provider/provided_file_system.cc | 
| +++ b/chrome/browser/chromeos/file_system_provider/provided_file_system.cc | 
| @@ -5,7 +5,7 @@ | 
| #include "chrome/browser/chromeos/file_system_provider/provided_file_system.h" | 
|  | 
| #include "base/files/file.h" | 
| -#include "base/values.h" | 
| +#include "chrome/browser/chromeos/file_system_provider/operations/unmount.h" | 
| #include "chrome/browser/chromeos/file_system_provider/request_manager.h" | 
| #include "chrome/common/extensions/api/file_system_provider.h" | 
| #include "extensions/browser/event_router.h" | 
| @@ -14,52 +14,24 @@ namespace chromeos { | 
| namespace file_system_provider { | 
| namespace { | 
|  | 
| -// Creates values to be passed to request events. These values can be extended | 
| -// by additional fields. | 
| -scoped_ptr<base::ListValue> CreateRequestValues(int file_system_id, | 
| -                                                int request_id) { | 
| -  scoped_ptr<base::ListValue> values(new base::ListValue()); | 
| -  values->AppendInteger(file_system_id); | 
| -  values->AppendInteger(request_id); | 
| -  return values.Pass(); | 
| -} | 
| - | 
| -// Forwards the success callback to the status callback. Ignores arguments, | 
| -// since unmount request does not provide arguments. | 
| -void OnRequestUnmountSuccess( | 
| -    const fileapi::AsyncFileUtil::StatusCallback& callback, | 
| -    scoped_ptr<base::DictionaryValue> /* result */, | 
| -    bool /* has_next */) { | 
| -  callback.Run(base::File::FILE_OK); | 
| -} | 
| - | 
| }  // namespace | 
|  | 
| ProvidedFileSystem::ProvidedFileSystem( | 
| extensions::EventRouter* event_router, | 
| const ProvidedFileSystemInfo& file_system_info) | 
| -    : event_router_(event_router), file_system_info_(file_system_info) {} | 
| +    : event_router_(event_router), file_system_info_(file_system_info) { | 
| +} | 
|  | 
| ProvidedFileSystem::~ProvidedFileSystem() {} | 
|  | 
| -bool ProvidedFileSystem::RequestUnmount( | 
| +void ProvidedFileSystem::RequestUnmount( | 
| const fileapi::AsyncFileUtil::StatusCallback& callback) { | 
| -  int request_id = request_manager_.CreateRequest( | 
| -      base::Bind(&OnRequestUnmountSuccess, callback), callback); | 
| - | 
| -  if (!request_id) | 
| -    return false; | 
| - | 
| -  scoped_ptr<base::ListValue> values( | 
| -      CreateRequestValues(file_system_info_.file_system_id(), request_id)); | 
| - | 
| -  event_router_->DispatchEventToExtension( | 
| -      file_system_info_.extension_id(), | 
| -      make_scoped_ptr(new extensions::Event( | 
| -          extensions::api::file_system_provider::OnUnmountRequested::kEventName, | 
| -          values.Pass()))); | 
| - | 
| -  return true; | 
| +  if (!request_manager_.CreateRequest( | 
| +          make_scoped_ptr<RequestManager::HandlerInterface>( | 
| +              new operations::Unmount( | 
| +                  event_router_, file_system_info_, callback)))) { | 
| +    callback.Run(base::File::FILE_ERROR_SECURITY); | 
| +  } | 
| } | 
|  | 
| const ProvidedFileSystemInfo& ProvidedFileSystem::GetFileSystemInfo() const { | 
|  |