| Index: third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
|
| diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
|
| index 3cadeed808817434ccd3af7cababd94d40fd57b1..38991a959fdbec83fe2ed7fc11d9b11fc297e6d9 100644
|
| --- a/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
|
| +++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
|
| @@ -30,11 +30,16 @@ p_{{param.name}}
|
| {%- endmacro %}
|
|
|
| {#--- Begin #}
|
| -const char* {{class_name}}::Name_ = "{{namespace_as_string}}::{{class_name}}";
|
| -const uint32_t {{class_name}}::Version_ = {{interface.version}};
|
| +MOJO_STATIC_CONST_MEMBER_DEFINITION const char {{class_name}}::Name_[] = "{{namespace_as_string}}::{{class_name}}";
|
| +MOJO_STATIC_CONST_MEMBER_DEFINITION const uint32_t {{class_name}}::Version_;
|
| +
|
| {#--- Constants #}
|
| -{% for constant in interface.constants %}
|
| -const {{constant.kind|cpp_pod_type}} {{interface.name}}::{{constant.name}} = {{constant|constant_value}};
|
| +{%- for constant in interface.constants %}
|
| +{%- if constant.kind|is_integral_kind %}
|
| +MOJO_STATIC_CONST_MEMBER_DEFINITION const {{constant.kind|cpp_pod_type}} {{interface.name}}::{{constant.name}};
|
| +{%- else %}
|
| +MOJO_STATIC_CONST_MEMBER_DEFINITION const {{constant.kind|cpp_pod_type}} {{interface.name}}::{{constant.name}} = {{constant|constant_value}};
|
| +{%- endif %}
|
| {%- endfor %}
|
|
|
| {#--- ForwardToCallback definition #}
|
| @@ -67,7 +72,7 @@ bool {{class_name}}_{{method.name}}_ForwardToCallback::Accept(
|
| {%- endfor %}
|
|
|
| {{proxy_name}}::{{proxy_name}}(mojo::MessageReceiverWithResponder* receiver)
|
| - : receiver_(receiver) {
|
| + : ControlMessageProxy(receiver) {
|
| }
|
|
|
| {#--- Proxy definitions #}
|
| @@ -115,7 +120,7 @@ void {{proxy_name}}::{{method.name}}(
|
| class {{class_name}}_{{method.name}}_ProxyToResponder
|
| : public {{class_name}}::{{method.name}}Callback::Runnable {
|
| public:
|
| - virtual ~{{class_name}}_{{method.name}}_ProxyToResponder() {
|
| + ~{{class_name}}_{{method.name}}_ProxyToResponder() override {
|
| // Is the Mojo application destroying the callback without running it
|
| // and without first closing the pipe?
|
| bool callback_was_dropped = responder_ && responder_->IsValid();
|
| @@ -159,7 +164,8 @@ void {{class_name}}_{{method.name}}_ProxyToResponder::Run(
|
| {%- endfor %}
|
|
|
| {{class_name}}Stub::{{class_name}}Stub()
|
| - : sink_(nullptr) {
|
| + : sink_(nullptr),
|
| + control_message_handler_({{interface.name}}::Version_) {
|
| }
|
|
|
| {{class_name}}Stub::~{{interface.name}}Stub() {}
|
| @@ -167,6 +173,8 @@ void {{class_name}}_{{method.name}}_ProxyToResponder::Run(
|
| {#--- Stub definition #}
|
|
|
| bool {{class_name}}Stub::Accept(mojo::Message* message) {
|
| + if (mojo::internal::ControlMessageHandler::IsControlMessage(message))
|
| + return control_message_handler_.Accept(message);
|
| {%- if interface.methods %}
|
| switch (message->header()->name) {
|
| {%- for method in interface.methods %}
|
| @@ -195,6 +203,8 @@ bool {{class_name}}Stub::Accept(mojo::Message* message) {
|
|
|
| bool {{class_name}}Stub::AcceptWithResponder(
|
| mojo::Message* message, mojo::MessageReceiverWithStatus* responder) {
|
| + if (mojo::internal::ControlMessageHandler::IsControlMessage(message))
|
| + return control_message_handler_.AcceptWithResponder(message, responder);
|
| {%- if interface.methods %}
|
| switch (message->header()->name) {
|
| {%- for method in interface.methods %}
|
| @@ -234,6 +244,13 @@ bool {{class_name}}Stub::AcceptWithResponder(
|
|
|
| bool {{class_name}}RequestValidator::Accept(mojo::Message* message) {
|
| assert(sink_);
|
| +
|
| + if (mojo::internal::ControlMessageHandler::IsControlMessage(message)) {
|
| + if (!mojo::internal::ValidateControlRequest(message))
|
| + return false;
|
| + return sink_->Accept(message);
|
| + }
|
| +
|
| switch (message->header()->name) {
|
| {%- for method in interface.methods %}
|
| case internal::k{{class_name}}_{{method.name}}_Name: {
|
| @@ -269,6 +286,13 @@ bool {{class_name}}RequestValidator::Accept(mojo::Message* message) {
|
|
|
| bool {{class_name}}ResponseValidator::Accept(mojo::Message* message) {
|
| assert(sink_);
|
| +
|
| + if (mojo::internal::ControlMessageHandler::IsControlMessage(message)) {
|
| + if (!mojo::internal::ValidateControlResponse(message))
|
| + return false;
|
| + return sink_->Accept(message);
|
| + }
|
| +
|
| if (!mojo::internal::ValidateMessageIsResponse(message))
|
| return false;
|
| switch (message->header()->name) {
|
|
|