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

Unified Diff: third_party/WebKit/Source/platform/inspector_protocol/Parser_cpp.template

Issue 2251343003: [DevTools] Generate separate copies of inspector_protocol. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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: third_party/WebKit/Source/platform/inspector_protocol/Parser_cpp.template
diff --git a/third_party/WebKit/Source/platform/inspector_protocol/Parser_cpp.template b/third_party/WebKit/Source/platform/inspector_protocol/Parser_cpp.template
index 34d8ff0720d046e736dd7a0ea2446a8ec80f27f7..d4e3bd55a26e4eed1aee61d5d4721160f69f0b11 100644
--- a/third_party/WebKit/Source/platform/inspector_protocol/Parser_cpp.template
+++ b/third_party/WebKit/Source/platform/inspector_protocol/Parser_cpp.template
@@ -2,8 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-namespace blink {
-namespace protocol {
+{% for namespace in config.protocol.namespace %}
+namespace {{namespace}} {
+{% endfor %}
namespace {
@@ -28,6 +29,35 @@ const char* const nullString = "null";
const char* const trueString = "true";
const char* const falseString = "false";
+bool isASCII(UChar c)
+{
+ return !(c & ~0x7F);
+}
+
+bool isSpaceOrNewLine(UChar c)
+{
+ return isASCII(c) && c <= ' ' && (c == ' ' || (c <= 0xD && c >= 0x9));
+}
+
+double charactersToDouble(const UChar* characters, size_t length, bool* ok)
+{
+ std::vector<char> buffer;
+ buffer.reserve(length + 1);
+ for (size_t i = 0; i < length; ++i) {
+ if (!isASCII(characters[i])) {
+ *ok = false;
+ return 0;
+ }
+ buffer.push_back(static_cast<char>(characters[i]));
+ }
+ buffer.push_back('\0');
+
+ char* endptr;
+ double result = std::strtod(buffer.data(), &endptr);
+ *ok = !(*endptr);
+ return result;
+}
+
bool parseConstToken(const UChar* start, const UChar* end, const UChar** tokenEnd, const char* token)
{
while (start < end && *token != '\0' && *start++ == *token++) { }
@@ -195,7 +225,7 @@ bool skipComment(const UChar* start, const UChar* end, const UChar** commentEnd)
void skipWhitespaceAndComments(const UChar* start, const UChar* end, const UChar** whitespaceEnd)
{
while (start < end) {
- if (String16::isSpaceOrNewLine(*start)) {
+ if (isSpaceOrNewLine(*start)) {
++start;
} else if (*start == '/') {
const UChar* commentEnd;
@@ -282,7 +312,7 @@ inline int hexToInt(UChar c)
return 0;
}
-bool decodeString(const UChar* start, const UChar* end, String16Builder* output)
+bool decodeString(const UChar* start, const UChar* end, StringBuilder* output)
{
while (start < end) {
UChar c = *start++;
@@ -335,7 +365,7 @@ bool decodeString(const UChar* start, const UChar* end, String16Builder* output)
return true;
}
-bool decodeString(const UChar* start, const UChar* end, String16* output)
+bool decodeString(const UChar* start, const UChar* end, String* output)
{
if (start == end) {
*output = "";
@@ -343,8 +373,8 @@ bool decodeString(const UChar* start, const UChar* end, String16* output)
}
if (start > end)
return false;
- String16Builder buffer;
- buffer.reserveCapacity(end - start);
+ StringBuilder buffer;
+ StringUtil::builderReserve(buffer, end - start);
if (!decodeString(start, end, &buffer))
return false;
*output = buffer.toString();
@@ -374,7 +404,7 @@ std::unique_ptr<Value> buildValue(const UChar* start, const UChar* end, const UC
break;
case Number: {
bool ok;
- double value = String16::charactersToDouble(tokenStart, tokenEnd - tokenStart, &ok);
+ double value = charactersToDouble(tokenStart, tokenEnd - tokenStart, &ok);
if (!ok)
return nullptr;
int number = static_cast<int>(value);
@@ -385,7 +415,7 @@ std::unique_ptr<Value> buildValue(const UChar* start, const UChar* end, const UC
break;
}
case StringLiteral: {
- String16 value;
+ String value;
bool ok = decodeString(tokenStart + 1, tokenEnd - 1, &value);
if (!ok)
return nullptr;
@@ -427,7 +457,7 @@ std::unique_ptr<Value> buildValue(const UChar* start, const UChar* end, const UC
while (token != ObjectEnd) {
if (token != StringLiteral)
return nullptr;
- String16 key;
+ String key;
if (!decodeString(tokenStart + 1, tokenEnd - 1, &key))
return nullptr;
start = tokenEnd;
@@ -483,12 +513,16 @@ std::unique_ptr<Value> parseJSONInternal(const UChar* start, unsigned length)
} // anonymous namespace
-std::unique_ptr<Value> parseJSON(const String16& json)
+std::unique_ptr<Value> parseJSON(const String& json)
{
- if (json.isEmpty())
+ const UChar* characters = nullptr;
+ size_t length = 0;
+ StringUtil::toCharacters(json, &characters, &length);
+ if (!length)
return nullptr;
- return parseJSONInternal(json.characters16(), json.length());
+ return parseJSONInternal(characters, length);
}
-} // namespace protocol
-} // namespace blink
+{% for namespace in config.protocol.namespace %}
+} // namespace {{namespace}}
+{% endfor %}

Powered by Google App Engine
This is Rietveld 408576698