Commit f4397558 authored by Johannes Henkel's avatar Johannes Henkel Committed by Commit Bot

[DevTools] Roll inspector_protocol

New Rev = 4c2d2efe9aacf50d4242290097a2e74c14229276

This brings in the Status::ToASCIIString method.

Change-Id: I01e5618f03cb4105b1f7144cdc6ee8ce6f80b23b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1576230Reviewed-by: default avatarAndrey Kosyakov <caseq@chromium.org>
Commit-Queue: Andrey Kosyakov <caseq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#652731}
parent 28c26e84
...@@ -2,7 +2,7 @@ Name: inspector protocol ...@@ -2,7 +2,7 @@ Name: inspector protocol
Short Name: inspector_protocol Short Name: inspector_protocol
URL: https://chromium.googlesource.com/deps/inspector_protocol/ URL: https://chromium.googlesource.com/deps/inspector_protocol/
Version: 0 Version: 0
Revision: 0ffa9dd64489868aad8fc40988558725eabd656e Revision: 4c2d2efe9aacf50d4242290097a2e74c14229276
License: BSD License: BSD
License File: LICENSE License File: LICENSE
Security Critical: no Security Critical: no
......
...@@ -11,6 +11,84 @@ ...@@ -11,6 +11,84 @@
#include <stack> #include <stack>
namespace inspector_protocol_encoding { namespace inspector_protocol_encoding {
// =============================================================================
// Status and Error codes
// =============================================================================
std::string Status::ToASCIIString() const {
switch (error) {
case Error::OK:
return "OK";
case Error::JSON_PARSER_UNPROCESSED_INPUT_REMAINS:
return ToASCIIString("JSON: unprocessed input remains");
case Error::JSON_PARSER_STACK_LIMIT_EXCEEDED:
return ToASCIIString("JSON: stack limit exceeded");
case Error::JSON_PARSER_NO_INPUT:
return ToASCIIString("JSON: no input");
case Error::JSON_PARSER_INVALID_TOKEN:
return ToASCIIString("JSON: invalid token");
case Error::JSON_PARSER_INVALID_NUMBER:
return ToASCIIString("JSON: invalid number");
case Error::JSON_PARSER_INVALID_STRING:
return ToASCIIString("JSON: invalid string");
case Error::JSON_PARSER_UNEXPECTED_ARRAY_END:
return ToASCIIString("JSON: unexpected array end");
case Error::JSON_PARSER_COMMA_OR_ARRAY_END_EXPECTED:
return ToASCIIString("JSON: comma or array end expected");
case Error::JSON_PARSER_STRING_LITERAL_EXPECTED:
return ToASCIIString("JSON: string literal expected");
case Error::JSON_PARSER_COLON_EXPECTED:
return ToASCIIString("JSON: colon expected");
case Error::JSON_PARSER_UNEXPECTED_MAP_END:
return ToASCIIString("JSON: unexpected map end");
case Error::JSON_PARSER_COMMA_OR_MAP_END_EXPECTED:
return ToASCIIString("JSON: comma or map end expected");
case Error::JSON_PARSER_VALUE_EXPECTED:
return ToASCIIString("JSON: value expected");
case Error::CBOR_INVALID_INT32:
return ToASCIIString("CBOR: invalid int32");
case Error::CBOR_INVALID_DOUBLE:
return ToASCIIString("CBOR: invalid double");
case Error::CBOR_INVALID_ENVELOPE:
return ToASCIIString("CBOR: invalid envelope");
case Error::CBOR_INVALID_STRING8:
return ToASCIIString("CBOR: invalid string8");
case Error::CBOR_INVALID_STRING16:
return ToASCIIString("CBOR: invalid string16");
case Error::CBOR_INVALID_BINARY:
return ToASCIIString("CBOR: invalid binary");
case Error::CBOR_UNSUPPORTED_VALUE:
return ToASCIIString("CBOR: unsupported value");
case Error::CBOR_NO_INPUT:
return ToASCIIString("CBOR: no input");
case Error::CBOR_INVALID_START_BYTE:
return ToASCIIString("CBOR: invalid start byte");
case Error::CBOR_UNEXPECTED_EOF_EXPECTED_VALUE:
return ToASCIIString("CBOR: unexpected eof expected value");
case Error::CBOR_UNEXPECTED_EOF_IN_ARRAY:
return ToASCIIString("CBOR: unexpected eof in array");
case Error::CBOR_UNEXPECTED_EOF_IN_MAP:
return ToASCIIString("CBOR: unexpected eof in map");
case Error::CBOR_INVALID_MAP_KEY:
return ToASCIIString("CBOR: invalid map key");
case Error::CBOR_STACK_LIMIT_EXCEEDED:
return ToASCIIString("CBOR: stack limit exceeded");
case Error::CBOR_TRAILING_JUNK:
return ToASCIIString("CBOR: trailing junk");
case Error::CBOR_MAP_START_EXPECTED:
return ToASCIIString("CBOR: map start expected");
case Error::CBOR_MAP_STOP_EXPECTED:
return ToASCIIString("CBOR: map stop expected");
case Error::CBOR_ENVELOPE_SIZE_LIMIT_EXCEEDED:
return ToASCIIString("CBOR: envelope size limit exceeded");
}
}
std::string Status::ToASCIIString(const char* msg) const {
return std::string(msg) + " at position " + std::to_string(pos);
}
namespace cbor { namespace cbor {
namespace { namespace {
// Indicates the number of bits the "initial byte" needs to be shifted to the // Indicates the number of bits the "initial byte" needs to be shifted to the
......
...@@ -73,7 +73,9 @@ inline span<uint8_t> SpanFrom(const std::string& v) { ...@@ -73,7 +73,9 @@ inline span<uint8_t> SpanFrom(const std::string& v) {
return span<uint8_t>(reinterpret_cast<const uint8_t*>(v.data()), v.size()); return span<uint8_t>(reinterpret_cast<const uint8_t*>(v.data()), v.size());
} }
// Error codes. // =============================================================================
// Status and Error codes
// =============================================================================
enum class Error { enum class Error {
OK = 0, OK = 0,
// JSON parsing errors - json_parser.{h,cc}. // JSON parsing errors - json_parser.{h,cc}.
...@@ -105,11 +107,10 @@ enum class Error { ...@@ -105,11 +107,10 @@ enum class Error {
CBOR_UNEXPECTED_EOF_IN_MAP = 0x19, CBOR_UNEXPECTED_EOF_IN_MAP = 0x19,
CBOR_INVALID_MAP_KEY = 0x1a, CBOR_INVALID_MAP_KEY = 0x1a,
CBOR_STACK_LIMIT_EXCEEDED = 0x1b, CBOR_STACK_LIMIT_EXCEEDED = 0x1b,
CBOR_STRING8_MUST_BE_7BIT = 0x1c, CBOR_TRAILING_JUNK = 0x1c,
CBOR_TRAILING_JUNK = 0x1d, CBOR_MAP_START_EXPECTED = 0x1d,
CBOR_MAP_START_EXPECTED = 0x1e, CBOR_MAP_STOP_EXPECTED = 0x1e,
CBOR_MAP_STOP_EXPECTED = 0x1f, CBOR_ENVELOPE_SIZE_LIMIT_EXCEEDED = 0x1f,
CBOR_ENVELOPE_SIZE_LIMIT_EXCEEDED = 0x20,
}; };
// A status value with position that can be copied. The default status // A status value with position that can be copied. The default status
...@@ -123,6 +124,13 @@ struct Status { ...@@ -123,6 +124,13 @@ struct Status {
std::ptrdiff_t pos = npos(); std::ptrdiff_t pos = npos();
Status(Error error, std::ptrdiff_t pos) : error(error), pos(pos) {} Status(Error error, std::ptrdiff_t pos) : error(error), pos(pos) {}
Status() = default; Status() = default;
// Returns a 7 bit US-ASCII string, either "OK" or an error message
// that includes the position.
std::string ToASCIIString() const;
private:
std::string ToASCIIString(const char* msg) const;
}; };
// Handler interface for parser events emitted by a streaming parser. // Handler interface for parser events emitted by a streaming parser.
......
...@@ -141,6 +141,19 @@ TEST(SpanFromTest, FromConstCharAndLiteral) { ...@@ -141,6 +141,19 @@ TEST(SpanFromTest, FromConstCharAndLiteral) {
EXPECT_EQ(3, SpanFrom("foo").size()); EXPECT_EQ(3, SpanFrom("foo").size());
} }
// =============================================================================
// Status and Error codes
// =============================================================================
TEST(StatusTest, StatusToASCIIString) {
Status ok_status;
EXPECT_EQ("OK", ok_status.ToASCIIString());
Status json_error(Error::JSON_PARSER_COLON_EXPECTED, 42);
EXPECT_EQ("JSON: colon expected at position 42", json_error.ToASCIIString());
Status cbor_error(Error::CBOR_TRAILING_JUNK, 21);
EXPECT_EQ("CBOR: trailing junk at position 21", cbor_error.ToASCIIString());
}
namespace cbor { namespace cbor {
// ============================================================================= // =============================================================================
......
...@@ -18,6 +18,84 @@ namespace {{namespace}} { ...@@ -18,6 +18,84 @@ namespace {{namespace}} {
// ===== encoding/encoding.cc ===== // ===== encoding/encoding.cc =====
// =============================================================================
// Status and Error codes
// =============================================================================
std::string Status::ToASCIIString() const {
switch (error) {
case Error::OK:
return "OK";
case Error::JSON_PARSER_UNPROCESSED_INPUT_REMAINS:
return ToASCIIString("JSON: unprocessed input remains");
case Error::JSON_PARSER_STACK_LIMIT_EXCEEDED:
return ToASCIIString("JSON: stack limit exceeded");
case Error::JSON_PARSER_NO_INPUT:
return ToASCIIString("JSON: no input");
case Error::JSON_PARSER_INVALID_TOKEN:
return ToASCIIString("JSON: invalid token");
case Error::JSON_PARSER_INVALID_NUMBER:
return ToASCIIString("JSON: invalid number");
case Error::JSON_PARSER_INVALID_STRING:
return ToASCIIString("JSON: invalid string");
case Error::JSON_PARSER_UNEXPECTED_ARRAY_END:
return ToASCIIString("JSON: unexpected array end");
case Error::JSON_PARSER_COMMA_OR_ARRAY_END_EXPECTED:
return ToASCIIString("JSON: comma or array end expected");
case Error::JSON_PARSER_STRING_LITERAL_EXPECTED:
return ToASCIIString("JSON: string literal expected");
case Error::JSON_PARSER_COLON_EXPECTED:
return ToASCIIString("JSON: colon expected");
case Error::JSON_PARSER_UNEXPECTED_MAP_END:
return ToASCIIString("JSON: unexpected map end");
case Error::JSON_PARSER_COMMA_OR_MAP_END_EXPECTED:
return ToASCIIString("JSON: comma or map end expected");
case Error::JSON_PARSER_VALUE_EXPECTED:
return ToASCIIString("JSON: value expected");
case Error::CBOR_INVALID_INT32:
return ToASCIIString("CBOR: invalid int32");
case Error::CBOR_INVALID_DOUBLE:
return ToASCIIString("CBOR: invalid double");
case Error::CBOR_INVALID_ENVELOPE:
return ToASCIIString("CBOR: invalid envelope");
case Error::CBOR_INVALID_STRING8:
return ToASCIIString("CBOR: invalid string8");
case Error::CBOR_INVALID_STRING16:
return ToASCIIString("CBOR: invalid string16");
case Error::CBOR_INVALID_BINARY:
return ToASCIIString("CBOR: invalid binary");
case Error::CBOR_UNSUPPORTED_VALUE:
return ToASCIIString("CBOR: unsupported value");
case Error::CBOR_NO_INPUT:
return ToASCIIString("CBOR: no input");
case Error::CBOR_INVALID_START_BYTE:
return ToASCIIString("CBOR: invalid start byte");
case Error::CBOR_UNEXPECTED_EOF_EXPECTED_VALUE:
return ToASCIIString("CBOR: unexpected eof expected value");
case Error::CBOR_UNEXPECTED_EOF_IN_ARRAY:
return ToASCIIString("CBOR: unexpected eof in array");
case Error::CBOR_UNEXPECTED_EOF_IN_MAP:
return ToASCIIString("CBOR: unexpected eof in map");
case Error::CBOR_INVALID_MAP_KEY:
return ToASCIIString("CBOR: invalid map key");
case Error::CBOR_STACK_LIMIT_EXCEEDED:
return ToASCIIString("CBOR: stack limit exceeded");
case Error::CBOR_TRAILING_JUNK:
return ToASCIIString("CBOR: trailing junk");
case Error::CBOR_MAP_START_EXPECTED:
return ToASCIIString("CBOR: map start expected");
case Error::CBOR_MAP_STOP_EXPECTED:
return ToASCIIString("CBOR: map stop expected");
case Error::CBOR_ENVELOPE_SIZE_LIMIT_EXCEEDED:
return ToASCIIString("CBOR: envelope size limit exceeded");
}
}
std::string Status::ToASCIIString(const char* msg) const {
return std::string(msg) + " at position " + std::to_string(pos);
}
namespace cbor { namespace cbor {
namespace { namespace {
// Indicates the number of bits the "initial byte" needs to be shifted to the // Indicates the number of bits the "initial byte" needs to be shifted to the
......
...@@ -81,7 +81,9 @@ inline span<uint8_t> SpanFrom(const std::string& v) { ...@@ -81,7 +81,9 @@ inline span<uint8_t> SpanFrom(const std::string& v) {
return span<uint8_t>(reinterpret_cast<const uint8_t*>(v.data()), v.size()); return span<uint8_t>(reinterpret_cast<const uint8_t*>(v.data()), v.size());
} }
// Error codes. // =============================================================================
// Status and Error codes
// =============================================================================
enum class Error { enum class Error {
OK = 0, OK = 0,
// JSON parsing errors - json_parser.{h,cc}. // JSON parsing errors - json_parser.{h,cc}.
...@@ -113,11 +115,10 @@ enum class Error { ...@@ -113,11 +115,10 @@ enum class Error {
CBOR_UNEXPECTED_EOF_IN_MAP = 0x19, CBOR_UNEXPECTED_EOF_IN_MAP = 0x19,
CBOR_INVALID_MAP_KEY = 0x1a, CBOR_INVALID_MAP_KEY = 0x1a,
CBOR_STACK_LIMIT_EXCEEDED = 0x1b, CBOR_STACK_LIMIT_EXCEEDED = 0x1b,
CBOR_STRING8_MUST_BE_7BIT = 0x1c, CBOR_TRAILING_JUNK = 0x1c,
CBOR_TRAILING_JUNK = 0x1d, CBOR_MAP_START_EXPECTED = 0x1d,
CBOR_MAP_START_EXPECTED = 0x1e, CBOR_MAP_STOP_EXPECTED = 0x1e,
CBOR_MAP_STOP_EXPECTED = 0x1f, CBOR_ENVELOPE_SIZE_LIMIT_EXCEEDED = 0x1f,
CBOR_ENVELOPE_SIZE_LIMIT_EXCEEDED = 0x20,
}; };
// A status value with position that can be copied. The default status // A status value with position that can be copied. The default status
...@@ -131,6 +132,13 @@ struct Status { ...@@ -131,6 +132,13 @@ struct Status {
std::ptrdiff_t pos = npos(); std::ptrdiff_t pos = npos();
Status(Error error, std::ptrdiff_t pos) : error(error), pos(pos) {} Status(Error error, std::ptrdiff_t pos) : error(error), pos(pos) {}
Status() = default; Status() = default;
// Returns a 7 bit US-ASCII string, either "OK" or an error message
// that includes the position.
std::string ToASCIIString() const;
private:
std::string ToASCIIString(const char* msg) const;
}; };
// Handler interface for parser events emitted by a streaming parser. // Handler interface for parser events emitted by a streaming parser.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment