Index: chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc |
diff --git a/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc b/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc |
index e75968642b9cd4b89e93018459f730e0f81da558..17d854cbb10ad1485c571bbb025640923dda4baa 100644 |
--- a/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc |
+++ b/chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc |
@@ -107,6 +107,8 @@ bool FileSystemProviderMountFunction::RunImpl() { |
Service* service = Service::Get(GetProfile()); |
DCHECK(service); |
+ if (!service) |
+ return false; |
int file_system_id = |
service->MountFileSystem(extension_id(), params->display_name); |
@@ -132,11 +134,13 @@ bool FileSystemProviderMountFunction::RunImpl() { |
bool FileSystemProviderUnmountFunction::RunImpl() { |
using api::file_system_provider::Unmount::Params; |
- const scoped_ptr<Params> params(Params::Create(*args_)); |
+ scoped_ptr<Params> params(Params::Create(*args_)); |
EXTENSION_FUNCTION_VALIDATE(params); |
Service* service = Service::Get(GetProfile()); |
DCHECK(service); |
+ if (!service) |
+ return false; |
if (!service->UnmountFileSystem(extension_id(), params->file_system_id)) { |
// TODO(mtomasz): Pass more detailed errors, rather than just a bool. |
@@ -158,6 +162,8 @@ bool FileSystemProviderInternalUnmountRequestedSuccessFunction::RunImpl() { |
Service* service = Service::Get(GetProfile()); |
DCHECK(service); |
+ if (!service) |
+ return false; |
ProvidedFileSystemInterface* file_system = |
service->GetProvidedFileSystem(extension_id(), params->file_system_id); |
@@ -197,6 +203,89 @@ bool FileSystemProviderInternalUnmountRequestedErrorFunction::RunImpl() { |
Service* service = Service::Get(GetProfile()); |
DCHECK(service); |
+ if (!service) |
+ return false; |
+ |
+ ProvidedFileSystemInterface* file_system = |
+ service->GetProvidedFileSystem(extension_id(), params->file_system_id); |
+ if (!file_system) { |
+ base::ListValue* result = new base::ListValue(); |
+ result->Append( |
+ CreateError(kNotFoundErrorName, kResponseFailedErrorMessage)); |
+ SetResult(result); |
+ return false; |
+ } |
+ |
+ RequestManager* request_manager = file_system->GetRequestManager(); |
+ DCHECK(request_manager); |
+ |
+ if (!request_manager->RejectRequest( |
+ params->request_id, ProviderErrorToFileError(params->error))) { |
+ // TODO(mtomasz): Pass more detailed errors, rather than just a bool. |
+ base::ListValue* result = new base::ListValue(); |
+ result->Append( |
+ CreateError(kSecurityErrorName, kResponseFailedErrorMessage)); |
+ SetResult(result); |
+ return false; |
+ } |
+ |
+ base::ListValue* result = new base::ListValue(); |
+ SetResult(result); |
+ return true; |
+} |
+ |
+bool FileSystemProviderInternalGetMetadataRequestedSuccessFunction::RunImpl() { |
+ // TODO(mtomasz): Create a common class for these internal functions so |
+ // most of the code could be easily reused. |
+ using api::file_system_provider_internal::GetMetadataRequestedSuccess::Params; |
+ scoped_ptr<Params> params(Params::Create(*args_)); |
+ EXTENSION_FUNCTION_VALIDATE(params); |
+ |
+ Service* service = Service::Get(GetProfile()); |
+ DCHECK(service); |
+ if (!service) |
+ return false; |
+ |
+ ProvidedFileSystemInterface* file_system = |
+ service->GetProvidedFileSystem(extension_id(), params->file_system_id); |
+ if (!file_system) { |
+ base::ListValue* result = new base::ListValue(); |
+ result->Append( |
+ CreateError(kNotFoundErrorName, kResponseFailedErrorMessage)); |
+ SetResult(result); |
+ return false; |
+ } |
+ |
+ RequestManager* request_manager = file_system->GetRequestManager(); |
+ DCHECK(request_manager); |
+ |
+ const int request_id = params->request_id; |
+ if (!request_manager->FulfillRequest( |
+ request_id, |
+ RequestValue::CreateForGetMetadataSuccess(params.Pass()), |
+ false /* has_more */)) { |
+ // TODO(mtomasz): Pass more detailed errors, rather than just a bool. |
+ base::ListValue* result = new base::ListValue(); |
+ result->Append( |
+ CreateError(kSecurityErrorName, kResponseFailedErrorMessage)); |
+ SetResult(result); |
+ return false; |
+ } |
+ |
+ base::ListValue* result = new base::ListValue(); |
+ SetResult(result); |
+ return true; |
+} |
+ |
+bool FileSystemProviderInternalGetMetadataRequestedErrorFunction::RunImpl() { |
+ using api::file_system_provider_internal::UnmountRequestedError::Params; |
+ const scoped_ptr<Params> params(Params::Create(*args_)); |
+ EXTENSION_FUNCTION_VALIDATE(params); |
+ |
+ Service* service = Service::Get(GetProfile()); |
+ DCHECK(service); |
+ if (!service) |
+ return false; |
ProvidedFileSystemInterface* file_system = |
service->GetProvidedFileSystem(extension_id(), params->file_system_id); |