From 2daae5fd11344eaa88a0d92b0f6d65f8d2255c00 Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Thu, 2 Jun 2011 12:07:03 +0100 Subject: Merge WebKit at r84325: Initial merge by git. Change-Id: Ic1a909300ecc0a13ddc6b4e784371d2ac6e3d59b --- Source/WebCore/inspector/generate-inspector-idl | 45 ++++++++++++++++++++----- 1 file changed, 37 insertions(+), 8 deletions(-) (limited to 'Source/WebCore/inspector/generate-inspector-idl') 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"]]) -- cgit v1.1