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

Unified Diff: content/browser/devtools/devtools_protocol_constants_generator.py

Issue 297803003: Add devtools protocol constants generator to chrome/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 7 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
« no previous file with comments | « chrome/chrome_debugger.gypi ('k') | content/browser/devtools/devtools_resources.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/devtools/devtools_protocol_constants_generator.py
diff --git a/content/browser/devtools/devtools_protocol_constants_generator.py b/content/browser/devtools/devtools_protocol_constants_generator.py
deleted file mode 100755
index 7339208d7e9ed383911f3a26c6eb6f9bb474b89e..0000000000000000000000000000000000000000
--- a/content/browser/devtools/devtools_protocol_constants_generator.py
+++ /dev/null
@@ -1,199 +0,0 @@
-#!/usr/bin/python
-# Copyright 2013 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.
-
-import sys
-import string
-import json
-
-template_h = string.Template("""\
-// Copyright 2013 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.
-
-#ifndef CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_PROTOCOL_CONSTANTS_H_
-#define CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_PROTOCOL_CONSTANTS_H_
-
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// Generated by
-// content/browser/devtools/devtools_protocol_constants_generator.py from
-// third_party/WebKit/Source/devtools/protocol.json and
-// content/browser/devtools/browser_protocol.json).
-
-#include <string>
-
-namespace content {
-namespace devtools {
-
-extern const char kProtocolVersion[];
-
-bool IsSupportedProtocolVersion(const std::string& version);
-
-extern const char kResult[];
-$contents
-
-} // devtools
-} // content
-
-#endif // CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_PROTOCOL_CONSTANTS_H_
-""")
-
-template_cc = string.Template("""\
-// Copyright 2013 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.
-
-// THIS FILE IS AUTOGENERATED. DO NOT EDIT.
-// Generated by
-// content/browser/devtools/devtools_protocol_constants_generator.py from
-// third_party/WebKit/Source/devtools/protocol.json and
-// content/browser/devtools/browser_protocol.json).
-
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_util.h"
-#include "content/browser/devtools/devtools_protocol_constants.h"
-
-namespace content {
-namespace devtools {
-
-const char kProtocolVersion[] = "$major.$minor";
-
-bool IsSupportedProtocolVersion(const std::string& version) {
- std::vector<std::string> tokens;
- Tokenize(version, ".", &tokens);
- int major, minor;
- return tokens.size() == 2 &&
- base::StringToInt(tokens[0], &major) && major == $major &&
- base::StringToInt(tokens[1], &minor) && minor <= $minor;
-}
-
-const char kResult[] = "result";
-$contents
-
-} // devtools
-} // content
-""")
-
-def Capitalize(s):
- return s[:1].capitalize() + s[1:]
-
-references = []
-
-def CreateNamespace(domain_name, data, keys, prefixes, name = None):
- result = {}
- if name:
- result["kName"] = name
- for i, key in enumerate(keys):
- if key in data:
- for parameter in data[key]:
- parameter_name = parameter["name"];
- result[prefixes[i] + Capitalize(parameter_name)] = parameter_name
- if "enum" in parameter:
- enum_name = Capitalize(parameter_name)
- result[enum_name] = {}
- for enum in parameter["enum"]:
- result[enum_name]["kEnum" + Capitalize(enum)] = enum
- reference = ""
- if "$ref" in parameter:
- reference = parameter["$ref"]
- if "items" in parameter and "$ref" in parameter["items"]:
- reference = parameter["items"]["$ref"]
- if reference:
- if not "." in reference:
- reference = domain_name + "." + reference
- references.append(reference)
- return result
-
-def IsHandledInBrowser(item):
- return "handlers" in item and "browser" in item["handlers"]
-
-def FormatContents(tree, indent, format_string):
- outer = dict((key, value) for key, value in tree.iteritems()
- if not isinstance(value, dict))
- inner = dict((key, value) for key, value in tree.iteritems()
- if isinstance(value, dict))
- body = ""
- body += "".join(indent + format_string.format(key, value)
- for (key, value) in sorted(outer.items()))
- body += "".join(FormatNamespace(key, value, indent, format_string)
- for (key, value) in sorted(inner.items()))
- return body
-
-def FormatNamespace(title, tree, indent, format_string):
- if (not tree):
- return ""
- body = '\n' + indent + "namespace " + title + " {\n"
- body += FormatContents(tree, indent + " ", format_string)
- body += indent + "} // " + title + "\n"
- return body
-
-def CreateHeader(tree, output_file):
- contents = FormatContents(tree, "", "extern const char {0}[];\n")
- output_file.write(template_h.substitute({"contents": contents}))
-
-def CreateBody(tree, version, output_file):
- contents = FormatContents(tree, "", "const char {0}[] = \"{1}\";\n")
- output_file.write(template_cc.substitute({
- "major": version["major"],
- "minor": version["minor"],
- "contents": contents
- }))
-
-blink_protocol_data = open(sys.argv[1]).read()
-browser_protocol_data = open(sys.argv[2]).read()
-
-blink_protocol = json.loads(blink_protocol_data)
-browser_protocol = json.loads(browser_protocol_data)
-
-blink_version = blink_protocol["version"]
-
-domains = blink_protocol["domains"] + browser_protocol["domains"]
-
-namespace_tree = {}
-
-for domain in domains:
- domain_value = {}
- domain_namespace_name = Capitalize(domain["domain"])
- if "commands" in domain:
- for command in domain["commands"]:
- if (IsHandledInBrowser(command)):
- domain_value[command["name"]] = CreateNamespace(domain["domain"],
- command, ["parameters", "returns"], ["kParam", "kResponse"],
- domain_namespace_name + "." + command["name"])
-
- if "events" in domain:
- for event in domain["events"]:
- if IsHandledInBrowser(event):
- domain_value[event["name"]] = CreateNamespace(domain["domain"],
- event, ["parameters"], ["kParam"],
- domain_namespace_name + "." + event["name"])
- if domain_value:
- namespace_tree[domain_namespace_name] = domain_value
-
-while (references):
- reference = references.pop();
- path = reference.split(".");
- parent_namespace = namespace_tree;
- for path_segment in path[0:-1]:
- if path_segment not in parent_namespace:
- parent_namespace[path_segment] = {}
- parent_namespace = parent_namespace[path_segment]
- if (path[-1] not in parent_namespace):
- try:
- domain = [d for d in domains if d["domain"] == path[0]][0]
- ref_type = [t for t in domain["types"] if t["id"] == path[1]][0]
- parent_namespace[ref_type["id"]] = CreateNamespace(path[0],
- ref_type, ["properties"], ["kParam"])
- except IndexError:
- sys.stderr.write("Failed to resolve type [{0}].\n".format(reference))
- sys.exit(1)
-
-for (namespace_name, namespace) in namespace_tree.items():
- namespace["kName"] = namespace_name
-
-with open(sys.argv[3], "w") as f:
- CreateBody(namespace_tree, blink_version, f)
-
-with open(sys.argv[4], "w") as f:
- CreateHeader(namespace_tree, f)
« no previous file with comments | « chrome/chrome_debugger.gypi ('k') | content/browser/devtools/devtools_resources.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698