api_invocation_errors.cc 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "extensions/renderer/bindings/api_invocation_errors.h"
  5. #include <vector>
  6. #include "base/strings/string_util.h"
  7. #include "base/strings/stringprintf.h"
  8. namespace extensions {
  9. namespace api_errors {
  10. const char kTypeString[] = "string";
  11. const char kTypeDouble[] = "number";
  12. const char kTypeBoolean[] = "boolean";
  13. const char kTypeInteger[] = "integer";
  14. const char kTypeObject[] = "object";
  15. const char kTypeList[] = "array";
  16. const char kTypeBinary[] = "binary";
  17. const char kTypeFunction[] = "function";
  18. const char kTypeUndefined[] = "undefined";
  19. const char kTypeNull[] = "null";
  20. const char kTypeAny[] = "any";
  21. std::string InvalidEnumValue(const std::set<std::string>& valid_enums) {
  22. std::vector<base::StringPiece> options(valid_enums.begin(),
  23. valid_enums.end());
  24. std::string options_str = base::JoinString(options, ", ");
  25. return base::StringPrintf("Value must be one of %s.", options_str.c_str());
  26. }
  27. std::string MissingRequiredProperty(const char* property_name) {
  28. return base::StringPrintf("Missing required property '%s'.", property_name);
  29. }
  30. std::string UnexpectedProperty(const char* property_name) {
  31. return base::StringPrintf("Unexpected property: '%s'.", property_name);
  32. }
  33. std::string TooFewArrayItems(int minimum, int found) {
  34. return base::StringPrintf("Array must have at least %d items; found %d.",
  35. minimum, found);
  36. }
  37. std::string TooManyArrayItems(int maximum, int found) {
  38. return base::StringPrintf("Array must have at most %d items; found %d.",
  39. maximum, found);
  40. }
  41. std::string TooFewStringChars(int minimum, int found) {
  42. return base::StringPrintf(
  43. "String must have at least %d characters; found %d.", minimum, found);
  44. }
  45. std::string TooManyStringChars(int maximum, int found) {
  46. return base::StringPrintf("String must have at most %d characters; found %d.",
  47. maximum, found);
  48. }
  49. std::string NumberTooSmall(int minimum) {
  50. return base::StringPrintf("Value must be at least %d.", minimum);
  51. }
  52. std::string NumberTooLarge(int maximum) {
  53. return base::StringPrintf("Value must be at most %d.", maximum);
  54. }
  55. std::string NumberIsNaNOrInfinity() {
  56. return base::StringPrintf("Value must not be NaN or Infinity.");
  57. }
  58. std::string InvalidType(const char* expected_type, const char* actual_type) {
  59. return base::StringPrintf("Invalid type: expected %s, found %s.",
  60. expected_type, actual_type);
  61. }
  62. std::string NotAnInstance(const char* instance_type) {
  63. return base::StringPrintf("Value must be an instance of %s.", instance_type);
  64. }
  65. std::string InvalidChoice() {
  66. return "Value did not match any choice.";
  67. }
  68. std::string UnserializableValue() {
  69. return "Value is unserializable.";
  70. }
  71. std::string ScriptThrewError() {
  72. return "Script threw an error.";
  73. }
  74. std::string TooManyArguments() {
  75. return "Too many arguments.";
  76. }
  77. std::string NoMatchingSignature() {
  78. return "No matching signature.";
  79. }
  80. std::string MissingRequiredArgument(const char* argument_name) {
  81. return base::StringPrintf("Missing required argument '%s'.", argument_name);
  82. }
  83. std::string IndexError(uint32_t index, const std::string& error) {
  84. return base::StringPrintf("Error at index %u: %s", index, error.c_str());
  85. }
  86. std::string PropertyError(const char* property_name, const std::string& error) {
  87. return base::StringPrintf("Error at property '%s': %s", property_name,
  88. error.c_str());
  89. }
  90. std::string ArgumentError(const std::string& parameter_name,
  91. const std::string& error) {
  92. return base::StringPrintf("Error at parameter '%s': %s",
  93. parameter_name.c_str(), error.c_str());
  94. }
  95. std::string InvocationError(const std::string& method_name,
  96. const std::string& expected_signature,
  97. const std::string& error) {
  98. return base::StringPrintf("Error in invocation of %s(%s): %s",
  99. method_name.c_str(), expected_signature.c_str(),
  100. error.c_str());
  101. }
  102. } // namespace api_errors
  103. } // namespace extensions