| 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 3bec92d4099a2a20df43e83cde5449d26b539c96..1591381624369060b77ad0b9f310b43a30ffe6c3 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
|
| @@ -15,80 +15,10 @@
|
| #include "chrome/common/extensions/api/file_system_provider_internal.h"
|
|
|
| using chromeos::file_system_provider::ProvidedFileSystemInterface;
|
| -using chromeos::file_system_provider::RequestManager;
|
| using chromeos::file_system_provider::RequestValue;
|
| using chromeos::file_system_provider::Service;
|
|
|
| namespace extensions {
|
| -namespace {
|
| -
|
| -// Error names from
|
| -// http://www.w3.org/TR/file-system-api/#errors-and-exceptions
|
| -const char kNotFoundErrorName[] = "NotFoundError";
|
| -const char kSecurityErrorName[] = "SecurityError";
|
| -
|
| -// Error messages.
|
| -const char kEmptyNameErrorMessage[] = "Empty display name is not allowed.";
|
| -const char kMountFailedErrorMessage[] = "Mounting the file system failed.";
|
| -const char kUnmountFailedErrorMessage[] = "Unmounting the file system failed.";
|
| -const char kResponseFailedErrorMessage[] =
|
| - "Sending a response for the request failed.";
|
| -
|
| -// Creates a dictionary, which looks like a DOMError. The returned dictionary
|
| -// will be converted to a real DOMError object in
|
| -// file_system_provier_custom_bindings.js.
|
| -base::DictionaryValue* CreateError(const std::string& name,
|
| - const std::string& message) {
|
| - base::DictionaryValue* error = new base::DictionaryValue();
|
| - error->SetString("name", name);
|
| - error->SetString("message", message);
|
| - return error;
|
| -}
|
| -
|
| -// Converts ProviderError to base::File::Error. This could be redundant, if it
|
| -// was possible to create DOMError instances in Javascript easily.
|
| -base::File::Error ProviderErrorToFileError(
|
| - api::file_system_provider::ProviderError error) {
|
| - switch (error) {
|
| - case api::file_system_provider::PROVIDER_ERROR_OK:
|
| - return base::File::FILE_OK;
|
| - case api::file_system_provider::PROVIDER_ERROR_IN_USE:
|
| - return base::File::FILE_ERROR_IN_USE;
|
| - case api::file_system_provider::PROVIDER_ERROR_EXISTS:
|
| - return base::File::FILE_ERROR_EXISTS;
|
| - case api::file_system_provider::PROVIDER_ERROR_NOT_FOUND:
|
| - return base::File::FILE_ERROR_NOT_FOUND;
|
| - case api::file_system_provider::PROVIDER_ERROR_ACCESS_DENIED:
|
| - return base::File::FILE_ERROR_ACCESS_DENIED;
|
| - case api::file_system_provider::PROVIDER_ERROR_TOO_MANY_OPENED:
|
| - return base::File::FILE_ERROR_TOO_MANY_OPENED;
|
| - case api::file_system_provider::PROVIDER_ERROR_NO_MEMORY:
|
| - return base::File::FILE_ERROR_NO_MEMORY;
|
| - case api::file_system_provider::PROVIDER_ERROR_NO_SPACE:
|
| - return base::File::FILE_ERROR_NO_SPACE;
|
| - case api::file_system_provider::PROVIDER_ERROR_NOT_A_DIRECTORY:
|
| - return base::File::FILE_ERROR_NOT_A_DIRECTORY;
|
| - case api::file_system_provider::PROVIDER_ERROR_INVALID_OPERATION:
|
| - return base::File::FILE_ERROR_INVALID_OPERATION;
|
| - case api::file_system_provider::PROVIDER_ERROR_SECURITY:
|
| - return base::File::FILE_ERROR_SECURITY;
|
| - case api::file_system_provider::PROVIDER_ERROR_ABORT:
|
| - return base::File::FILE_ERROR_ABORT;
|
| - case api::file_system_provider::PROVIDER_ERROR_NOT_A_FILE:
|
| - return base::File::FILE_ERROR_NOT_A_FILE;
|
| - case api::file_system_provider::PROVIDER_ERROR_NOT_EMPTY:
|
| - return base::File::FILE_ERROR_NOT_EMPTY;
|
| - case api::file_system_provider::PROVIDER_ERROR_INVALID_URL:
|
| - return base::File::FILE_ERROR_INVALID_URL;
|
| - case api::file_system_provider::PROVIDER_ERROR_IO:
|
| - return base::File::FILE_ERROR_IO;
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| - return base::File::FILE_ERROR_FAILED;
|
| -}
|
| -
|
| -} // namespace
|
|
|
| bool FileSystemProviderMountFunction::RunSync() {
|
| using api::file_system_provider::Mount::Params;
|
| @@ -160,40 +90,9 @@ bool FileSystemProviderInternalUnmountRequestedSuccessFunction::RunSync() {
|
| 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::CreateForUnmountSuccess(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;
|
| + return is_valid() &&
|
| + FulfillRequest(RequestValue::CreateForUnmountSuccess(params.Pass()),
|
| + false /* has_more */);
|
| }
|
|
|
| bool FileSystemProviderInternalUnmountRequestedErrorFunction::RunSync() {
|
| @@ -201,80 +100,17 @@ bool FileSystemProviderInternalUnmountRequestedErrorFunction::RunSync() {
|
| 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);
|
| - 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;
|
| + return is_valid() && RejectRequest(ProviderErrorToFileError(params->error));
|
| }
|
|
|
| bool FileSystemProviderInternalGetMetadataRequestedSuccessFunction::RunSync() {
|
| - // 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;
|
| + return is_valid() && FulfillRequest(RequestValue::CreateForGetMetadataSuccess(
|
| + params.Pass()),
|
| + false /* has_more */);
|
| }
|
|
|
| bool FileSystemProviderInternalGetMetadataRequestedErrorFunction::RunSync() {
|
| @@ -282,37 +118,7 @@ bool FileSystemProviderInternalGetMetadataRequestedErrorFunction::RunSync() {
|
| 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);
|
| - 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;
|
| + return is_valid() && RejectRequest(ProviderErrorToFileError(params->error));
|
| }
|
|
|
| } // namespace extensions
|
|
|