blob: 51d193415a646dc51ba977309ff38eda76a7035f [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "extensions/renderer/bindings/api_invocation_errors.h"
#include <vector>
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
namespace extensions {
namespace api_errors {
const char kTypeString[] = "string";
const char kTypeDouble[] = "number";
const char kTypeBoolean[] = "boolean";
const char kTypeInteger[] = "integer";
const char kTypeObject[] = "object";
const char kTypeList[] = "array";
const char kTypeBinary[] = "binary";
const char kTypeFunction[] = "function";
const char kTypeUndefined[] = "undefined";
const char kTypeNull[] = "null";
const char kTypeAny[] = "any";
std::string InvalidEnumValue(const std::set<std::string>& valid_enums) {
std::vector<base::StringPiece> options(valid_enums.begin(),
valid_enums.end());
std::string options_str = base::JoinString(options, ", ");
return base::StringPrintf("Value must be one of %s.", options_str.c_str());
}
std::string MissingRequiredProperty(const char* property_name) {
return base::StringPrintf("Missing required property '%s'.", property_name);
}
std::string UnexpectedProperty(const char* property_name) {
return base::StringPrintf("Unexpected property: '%s'.", property_name);
}
std::string TooFewArrayItems(int minimum, int found) {
return base::StringPrintf("Array must have at least %d items; found %d.",
minimum, found);
}
std::string TooManyArrayItems(int maximum, int found) {
return base::StringPrintf("Array must have at most %d items; found %d.",
maximum, found);
}
std::string TooFewStringChars(int minimum, int found) {
return base::StringPrintf(
"String must have at least %d characters; found %d.", minimum, found);
}
std::string TooManyStringChars(int maximum, int found) {
return base::StringPrintf("String must have at most %d characters; found %d.",
maximum, found);
}
std::string NumberTooSmall(int minimum) {
return base::StringPrintf("Value must be at least %d.", minimum);
}
std::string NumberTooLarge(int maximum) {
return base::StringPrintf("Value must be at most %d.", maximum);
}
std::string InvalidType(const char* expected_type, const char* actual_type) {
return base::StringPrintf("Invalid type: expected %s, found %s.",
expected_type, actual_type);
}
std::string NotAnInstance(const char* instance_type) {
return base::StringPrintf("Value must be an instance of %s.", instance_type);
}
std::string InvalidChoice() {
return "Value did not match any choice.";
}
std::string UnserializableValue() {
return "Value is unserializable.";
}
std::string ScriptThrewError() {
return "Script threw an error.";
}
std::string TooManyArguments() {
return "Too many arguments.";
}
std::string NoMatchingSignature() {
return "No matching signature.";
}
std::string MissingRequiredArgument(const char* argument_name) {
return base::StringPrintf("Missing required argument '%s'.", argument_name);
}
std::string IndexError(uint32_t index, const std::string& error) {
return base::StringPrintf("Error at index %u: %s", index, error.c_str());
}
std::string PropertyError(const char* property_name, const std::string& error) {
return base::StringPrintf("Error at property '%s': %s", property_name,
error.c_str());
}
std::string ArgumentError(const std::string& parameter_name,
const std::string& error) {
return base::StringPrintf("Error at parameter '%s': %s",
parameter_name.c_str(), error.c_str());
}
std::string InvocationError(const std::string& method_name,
const std::string& expected_signature,
const std::string& error) {
return base::StringPrintf("Error in invocation of %s(%s): %s",
method_name.c_str(), expected_signature.c_str(),
error.c_str());
}
} // namespace api_errors
} // namespace extensions