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

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

Issue 2012753003: DevTools: consolidate protocol generators for front-end, backend and type builder. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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
Index: third_party/WebKit/Source/platform/inspector_protocol/TypeBuilder_cpp.template
diff --git a/third_party/WebKit/Source/platform/inspector_protocol/TypeBuilder_cpp.template b/third_party/WebKit/Source/platform/inspector_protocol/TypeBuilder_cpp.template
index 7864402d4a9538d594429bd3395e0815db2b6d8b..4eba471c05e13f76b3590632d84da53cbbb32733 100644
--- a/third_party/WebKit/Source/platform/inspector_protocol/TypeBuilder_cpp.template
+++ b/third_party/WebKit/Source/platform/inspector_protocol/TypeBuilder_cpp.template
@@ -6,6 +6,8 @@
#include "platform/inspector_protocol/{{class_name}}.h"
+#include "platform/inspector_protocol/Frontend.h"
+
namespace blink {
namespace protocol {
@@ -80,16 +82,13 @@ std::unique_ptr<{{type.id}}> {{type.id}}::clone() const
return parse(serialize().get(), &errors);
}
{% endfor %}
-} // {{domain.domain}}
-{% endfor %}
// ------------- Enum values from params.
-{% for domain in api.domains %}
+
{% for command in join_arrays(domain, ["commands", "events"]) %}
{% for param in join_arrays(command, ["parameters", "returns"]) %}
{% if "enum" in param %}
-namespace {{domain.domain}} {
namespace {{command.name | to_title_case}} {
namespace {{param.name | to_title_case}}Enum {
{% for literal in param.enum %}
@@ -97,10 +96,48 @@ const char* {{ literal | to_title_case}} = "{{literal}}";
{% endfor %}
} // {{param.name | to_title_case}}Enum
} // {{command.name | to_title_case }}
-} // {{domain.domain}}
{% endif %}
{% endfor %}
{% endfor %}
+
+// ------------- Frontend::from.
+
+Frontend* Frontend::from(protocol::Frontend* frontend)
+{
+ return &(frontend->m_{{domain.domain | lower}});
+}
+
+// ------------- Frontend notifications.
+ {% for event in domain.events %}
+ {% if "handlers" in event and not ("renderer" in event["handlers"]) %}{% continue %}{% endif %}
+
+void Frontend::{{event.name}}(
+ {%- for parameter in event.parameters %}
+ {% if "optional" in parameter -%}
+ const Maybe<{{resolve_type(parameter).raw_type}}>&
+ {%- else -%}
+ {{resolve_type(parameter).pass_type}}
+ {%- endif %} {{parameter.name}}{%- if not loop.last -%}, {% endif -%}
+ {% endfor -%})
+{
+ std::unique_ptr<protocol::DictionaryValue> jsonMessage = DictionaryValue::create();
+ jsonMessage->setString("method", "{{domain.domain}}.{{event.name}}");
+ std::unique_ptr<protocol::DictionaryValue> paramsObject = DictionaryValue::create();
+ {% for parameter in event.parameters %}
+ {% if "optional" in parameter %}
+ if ({{parameter.name}}.isJust())
+ paramsObject->setValue("{{parameter.name}}", toValue({{parameter.name}}.fromJust()));
+ {% else %}
+ paramsObject->setValue("{{parameter.name}}", toValue({{resolve_type(parameter).to_raw_type % parameter.name}}));
+ {% endif %}
+ {% endfor %}
+ jsonMessage->setObject("params", std::move(paramsObject));
+ if (m_frontendChannel)
+ m_frontendChannel->sendProtocolNotification(jsonMessage->toJSONString());
+}
+ {% endfor %}
+
+} // {{domain.domain}}
{% endfor %}
} // namespace protocol

Powered by Google App Engine
This is Rietveld 408576698