Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(732)

Unified Diff: chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.cc

Issue 260943002: [fsp] Extract common code to FileSystemProvidedInternalFunction. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 4aadc26c13cce5d9f6080ba26f32342dcc11f440..8e378db97f95733671b9818194b3262df62e8774 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,39 +90,8 @@ 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 true;
- }
-
- 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 true;
- }
-
- base::ListValue* result = new base::ListValue();
- SetResult(result);
+ FulfillRequest(RequestValue::CreateForUnmountSuccess(params.Pass()),
+ false /* has_more */);
return true;
}
@@ -201,117 +100,26 @@ 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);
+ RejectRequest(ProviderErrorToFileError(params->error));
return true;
}
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);
+ FulfillRequest(RequestValue::CreateForGetMetadataSuccess(params.Pass()),
+ false /* has_more */);
return true;
}
bool FileSystemProviderInternalGetMetadataRequestedErrorFunction::RunSync() {
- using api::file_system_provider_internal::UnmountRequestedError::Params;
+ using api::file_system_provider_internal::GetMetadataRequestedError::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);
- if (!file_system) {
- base::ListValue* result = new base::ListValue();
- result->Append(
- CreateError(kNotFoundErrorName, kResponseFailedErrorMessage));
- SetResult(result);
- return true;
- }
-
- 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 true;
- }
-
- base::ListValue* result = new base::ListValue();
- SetResult(result);
+ RejectRequest(ProviderErrorToFileError(params->error));
return true;
}

Powered by Google App Engine
This is Rietveld 408576698