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 |