summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/inspector/generate-inspector-idl
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/inspector/generate-inspector-idl')
-rwxr-xr-xSource/WebCore/inspector/generate-inspector-idl45
1 files changed, 37 insertions, 8 deletions
diff --git a/Source/WebCore/inspector/generate-inspector-idl b/Source/WebCore/inspector/generate-inspector-idl
index f2f0e35..b5ecb78 100755
--- a/Source/WebCore/inspector/generate-inspector-idl
+++ b/Source/WebCore/inspector/generate-inspector-idl
@@ -81,6 +81,8 @@ type_traits = {
"object": "Object"
}
+ref_types = {}
+
macro_traits = {
"Database": "DATABASE",
"DOMStorage": "DOM_STORAGE",
@@ -90,34 +92,61 @@ macro_traits = {
"Profiler": "JAVASCRIPT_DEBUGGER"
}
-def param_type(param):
+def full_qualified_type_id(domain_name, type_id):
+ if type_id.find(".") == -1:
+ return "%s.%s" % (domain_name, type_id)
+ return type_id
+
+
+def param_type(domain_name, param):
if "type" in param:
- return type_traits[param["type"]];
+ return type_traits[param["type"]]
if "$ref" in param:
- return "Object"
+ type_id = full_qualified_type_id(domain_name, param["$ref"])
+ if type_id in ref_types:
+ ref_type = ref_types[type_id]
+ return type_traits[ref_type["type"]]
+ else:
+ return "Object"
for domain in json_api:
domain_name = domain["domain"]
if domain_name in macro_traits:
output_file.write("\n#if defined(ENABLE_%s) && ENABLE_%s" % (macro_traits[domain_name], macro_traits[domain_name]))
output_file.write("\n interface [Conditional=INSPECTOR] %s {" % domain_name)
+
+ if "types" in domain:
+ for type in domain["types"]:
+ type_id = full_qualified_type_id(domain_name, type["id"])
+ ref_types[type_id] = type;
+
if "commands" in domain:
for command in domain["commands"]:
- params = [];
+ params = []
if ("parameters" in command):
for in_param in command["parameters"]:
- params.append("in %s %s" % (param_type(in_param), in_param["name"]))
+ if ("optional" in in_param):
+ optional = " [optional]"
+ else:
+ optional = ""
+ params.append("in%s %s %s" % (optional, param_type(domain_name, in_param), in_param["name"]))
if ("returns" in command):
for out_param in command["returns"]:
- params.append("out %s %s" % (param_type(out_param), out_param["name"]))
+ params.append("out %s %s" % (param_type(domain_name, out_param), out_param["name"]))
output_file.write("\n void %s(%s);" % (command["name"], ", ".join(params)))
+
if "events" in domain:
for event in domain["events"]:
- params = [];
+ params = []
if ("parameters" in event):
for in_param in event["parameters"]:
- params.append("out %s %s" % (param_type(in_param), in_param["name"]))
+ if ("optional" in in_param):
+ optional = " [optional]"
+ else:
+ optional = ""
+ params.append("out%s %s %s" % (optional, param_type(domain_name, in_param), in_param["name"]))
output_file.write("\n [event] void %s(%s);" % (event["name"], ", ".join(params)))
+
output_file.write("\n };")
if domain["domain"] in macro_traits:
output_file.write("\n#endif // ENABLE_%s" % macro_traits[domain["domain"]])