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

Unified Diff: content/browser/devtools/protocol_string.cc

Issue 2493063005: [DevTools] Use inspector_protocol generator in content/browser/devtools. (Closed)
Patch Set: roll Created 4 years, 1 month 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
« no previous file with comments | « content/browser/devtools/protocol_string.h ('k') | third_party/WebKit/Source/core/inspector/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/devtools/protocol_string.cc
diff --git a/content/browser/devtools/protocol_string.cc b/content/browser/devtools/protocol_string.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f5de9499d459fbee0594351106b667facbf2ccdf
--- /dev/null
+++ b/content/browser/devtools/protocol_string.cc
@@ -0,0 +1,107 @@
+// Copyright 2016 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 "content/browser/devtools/protocol_string.h"
+
+#include "base/json/json_reader.h"
+#include "base/values.h"
+#include "content/browser/devtools/protocol/protocol.h"
+
+namespace content {
+namespace {
+
+std::unique_ptr<protocol::Value> toProtocolValue(
+ const base::Value* value, int depth) {
+ if (!value || !depth)
+ return nullptr;
+ if (value->IsType(base::Value::TYPE_NULL))
+ return protocol::Value::null();
+ if (value->IsType(base::Value::TYPE_BOOLEAN)) {
+ bool inner;
+ value->GetAsBoolean(&inner);
+ return protocol::FundamentalValue::create(inner);
+ }
+ if (value->IsType(base::Value::TYPE_INTEGER)) {
+ int inner;
+ value->GetAsInteger(&inner);
+ return protocol::FundamentalValue::create(inner);
+ }
+ if (value->IsType(base::Value::TYPE_DOUBLE)) {
+ double inner;
+ value->GetAsDouble(&inner);
+ return protocol::FundamentalValue::create(inner);
+ }
+ if (value->IsType(base::Value::TYPE_STRING)) {
+ std::string inner;
+ value->GetAsString(&inner);
+ return protocol::StringValue::create(inner);
+ }
+ if (value->IsType(base::Value::TYPE_LIST)) {
+ const base::ListValue* list = nullptr;
+ value->GetAsList(&list);
+ std::unique_ptr<protocol::ListValue> result = protocol::ListValue::create();
+ for (size_t i = 0; i < list->GetSize(); i++) {
+ const base::Value* item = nullptr;
+ list->Get(i, &item);
+ std::unique_ptr<protocol::Value> converted =
+ toProtocolValue(item, depth - 1);
+ if (converted)
+ result->pushValue(std::move(converted));
+ }
+ return std::move(result);
+ }
+ if (value->IsType(base::Value::TYPE_DICTIONARY)) {
+ const base::DictionaryValue* dictionary = nullptr;
+ value->GetAsDictionary(&dictionary);
+ std::unique_ptr<protocol::DictionaryValue> result =
+ protocol::DictionaryValue::create();
+ for (base::DictionaryValue::Iterator it(*dictionary);
+ !it.IsAtEnd(); it.Advance()) {
+ std::unique_ptr<protocol::Value> converted =
+ toProtocolValue(&it.value(), depth - 1);
+ if (converted)
+ result->setValue(it.key(), std::move(converted));
+ }
+ return std::move(result);
+ }
+ return nullptr;
+}
+
+} // namespace
+
+namespace protocol {
+
+// static
+std::unique_ptr<protocol::Value> StringUtil::parseJSON(
+ const std::string& json) {
+ std::unique_ptr<base::Value> value = base::JSONReader::Read(json);
+ return toProtocolValue(value.get(), 1000);
+}
+
+StringBuilder::StringBuilder() {}
+
+StringBuilder::~StringBuilder() {}
+
+void StringBuilder::append(const std::string& s) {
+ string_ += s;
+}
+
+void StringBuilder::append(char c) {
+ string_ += c;
+}
+
+void StringBuilder::append(const char* characters, size_t length) {
+ string_.append(characters, length);
+}
+
+std::string StringBuilder::toString() {
+ return string_;
+}
+
+void StringBuilder::reserveCapacity(size_t capacity) {
+ string_.reserve(capacity);
+}
+
+} // namespace protocol
+} // namespace content
« no previous file with comments | « content/browser/devtools/protocol_string.h ('k') | third_party/WebKit/Source/core/inspector/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698