This source file includes following definitions.
- CreateError
- RunImpl
#include "chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h"
#include "chrome/browser/chromeos/file_system_provider/service.h"
#include "chrome/common/extensions/api/file_system_provider.h"
namespace extensions {
namespace {
const char kSecurityErrorName[] = "SecurityError";
const char kEmptyNameErrorMessage[] = "Empty display name is not allowed.";
const char kRegisteringFailedErrorMessage[] =
"Registering the file system failed.";
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;
}
}
bool FileSystemProviderMountFunction::RunImpl() {
using extensions::api::file_system_provider::Mount::Params;
const scoped_ptr<Params> params(Params::Create(*args_));
EXTENSION_FUNCTION_VALIDATE(params);
if (params->display_name.empty()) {
base::ListValue* result = new base::ListValue();
result->Append(new base::StringValue(""));
result->Append(CreateError(kSecurityErrorName,
kEmptyNameErrorMessage));
SetResult(result);
return false;
}
chromeos::file_system_provider::Service* service =
chromeos::file_system_provider::Service::Get(GetProfile());
DCHECK(service);
int file_system_id =
service->RegisterFileSystem(extension_id(), params->display_name);
if (!file_system_id) {
base::ListValue* result = new base::ListValue();
result->Append(new base::FundamentalValue(0));
result->Append(
CreateError(kSecurityErrorName, kRegisteringFailedErrorMessage));
SetResult(result);
return false;
}
base::ListValue* result = new base::ListValue();
result->Append(new base::FundamentalValue(file_system_id));
SetResult(result);
SendResponse(true);
return true;
}
}