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

Side by Side Diff: mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl

Issue 2202893002: Mojo C++ Bindings: Add helpers for bad message reporting (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 4 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 unified diff | Download patch
« no previous file with comments | « mojo/public/interfaces/bindings/tests/test_bad_messages.mojom ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 {%- import "interface_macros.tmpl" as interface_macros %} 1 {%- import "interface_macros.tmpl" as interface_macros %}
2 {%- import "struct_macros.tmpl" as struct_macros %} 2 {%- import "struct_macros.tmpl" as struct_macros %}
3 3
4 {%- set class_name = interface.name %} 4 {%- set class_name = interface.name %}
5 {%- set proxy_name = interface.name ~ "Proxy" %} 5 {%- set proxy_name = interface.name ~ "Proxy" %}
6 {%- set namespace_as_string = "%s"|format(namespace|replace(".","::")) %} 6 {%- set namespace_as_string = "%s"|format(namespace|replace(".","::")) %}
7 7
8 {%- macro alloc_params(struct, params, message, serialization_context, 8 {%- macro alloc_params(struct, params, message, serialization_context,
9 description) %} 9 description) %}
10 ({{serialization_context}})->handles.Swap(({{message}})->mutable_handles()); 10 ({{serialization_context}})->handles.Swap(({{message}})->mutable_handles());
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 reinterpret_cast<internal::{{class_name}}_{{method.name}}_ResponseParams_D ata*>( 97 reinterpret_cast<internal::{{class_name}}_{{method.name}}_ResponseParams_D ata*>(
98 message->mutable_payload()); 98 message->mutable_payload());
99 99
100 {%- set desc = class_name~"::"~method.name~" response" %} 100 {%- set desc = class_name~"::"~method.name~" response" %}
101 {{alloc_params(method.response_param_struct, "params", "message", 101 {{alloc_params(method.response_param_struct, "params", "message",
102 "&serialization_context_", desc)}} 102 "&serialization_context_", desc)}}
103 103
104 {%- for param in method.response_parameters %} 104 {%- for param in method.response_parameters %}
105 *out_{{param.name}}_ = std::move(p_{{param.name}}); 105 *out_{{param.name}}_ = std::move(p_{{param.name}});
106 {%- endfor %} 106 {%- endfor %}
107 mojo::internal::SyncMessageResponseSetup::SetCurrentSyncResponseMessage(
108 message);
107 *result_ = true; 109 *result_ = true;
108 return true; 110 return true;
109 } 111 }
110 {%- endif %} 112 {%- endif %}
111 113
112 class {{class_name}}_{{method.name}}_ForwardToCallback 114 class {{class_name}}_{{method.name}}_ForwardToCallback
113 : public mojo::MessageReceiver { 115 : public mojo::MessageReceiver {
114 public: 116 public:
115 {{class_name}}_{{method.name}}_ForwardToCallback( 117 {{class_name}}_{{method.name}}_ForwardToCallback(
116 const {{class_name}}::{{method.name}}Callback& callback, 118 const {{class_name}}::{{method.name}}Callback& callback,
117 scoped_refptr<mojo::AssociatedGroupController> group_controller) 119 scoped_refptr<mojo::AssociatedGroupController> group_controller)
118 : callback_(callback), 120 : callback_(callback),
119 serialization_context_(std::move(group_controller)) { 121 serialization_context_(std::move(group_controller)) {
120 } 122 }
121 bool Accept(mojo::Message* message) override; 123 bool Accept(mojo::Message* message) override;
122 private: 124 private:
123 {{class_name}}::{{method.name}}Callback callback_; 125 {{class_name}}::{{method.name}}Callback callback_;
124 mojo::internal::SerializationContext serialization_context_; 126 mojo::internal::SerializationContext serialization_context_;
125 DISALLOW_COPY_AND_ASSIGN({{class_name}}_{{method.name}}_ForwardToCallback); 127 DISALLOW_COPY_AND_ASSIGN({{class_name}}_{{method.name}}_ForwardToCallback);
126 }; 128 };
127 bool {{class_name}}_{{method.name}}_ForwardToCallback::Accept( 129 bool {{class_name}}_{{method.name}}_ForwardToCallback::Accept(
128 mojo::Message* message) { 130 mojo::Message* message) {
129 internal::{{class_name}}_{{method.name}}_ResponseParams_Data* params = 131 internal::{{class_name}}_{{method.name}}_ResponseParams_Data* params =
130 reinterpret_cast<internal::{{class_name}}_{{method.name}}_ResponseParams_D ata*>( 132 reinterpret_cast<internal::{{class_name}}_{{method.name}}_ResponseParams_D ata*>(
131 message->mutable_payload()); 133 message->mutable_payload());
132 134
133 {%- set desc = class_name~"::"~method.name~" response" %} 135 {%- set desc = class_name~"::"~method.name~" response" %}
134 {{alloc_params(method.response_param_struct, "params", "message", 136 {{alloc_params(method.response_param_struct, "params", "message",
135 "&serialization_context_", desc)}} 137 "&serialization_context_", desc)}}
136 if (!callback_.is_null()) 138 if (!callback_.is_null()) {
139 mojo::internal::MessageDispatchContext context(message);
137 callback_.Run({{pass_params(method.response_parameters)}}); 140 callback_.Run({{pass_params(method.response_parameters)}});
141 }
138 return true; 142 return true;
139 } 143 }
140 {%- endif %} 144 {%- endif %}
141 {%- endfor %} 145 {%- endfor %}
142 146
143 {{proxy_name}}::{{proxy_name}}(mojo::MessageReceiverWithResponder* receiver) 147 {{proxy_name}}::{{proxy_name}}(mojo::MessageReceiverWithResponder* receiver)
144 : ControlMessageProxy(receiver) { 148 : ControlMessageProxy(receiver) {
145 } 149 }
146 150
147 {#--- Proxy definitions #} 151 {#--- Proxy definitions #}
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 internal::{{class_name}}_{{method.name}}_Params_Data* params = 315 internal::{{class_name}}_{{method.name}}_Params_Data* params =
312 reinterpret_cast<internal::{{class_name}}_{{method.name}}_Params_Data* >( 316 reinterpret_cast<internal::{{class_name}}_{{method.name}}_Params_Data* >(
313 message->mutable_payload()); 317 message->mutable_payload());
314 318
315 {%- set desc = class_name~"::"~method.name %} 319 {%- set desc = class_name~"::"~method.name %}
316 {{alloc_params(method.param_struct, "params", "message", 320 {{alloc_params(method.param_struct, "params", "message",
317 "&serialization_context_", desc)|indent(4)}} 321 "&serialization_context_", desc)|indent(4)}}
318 // A null |sink_| means no implementation was bound. 322 // A null |sink_| means no implementation was bound.
319 assert(sink_); 323 assert(sink_);
320 TRACE_EVENT0("mojom", "{{class_name}}::{{method.name}}"); 324 TRACE_EVENT0("mojom", "{{class_name}}::{{method.name}}");
325 mojo::internal::MessageDispatchContext context(message);
321 sink_->{{method.name}}({{pass_params(method.parameters)}}); 326 sink_->{{method.name}}({{pass_params(method.parameters)}});
322 return true; 327 return true;
323 {%- else %} 328 {%- else %}
324 break; 329 break;
325 {%- endif %} 330 {%- endif %}
326 } 331 }
327 {%- endfor %} 332 {%- endfor %}
328 } 333 }
329 {%- endif %} 334 {%- endif %}
330 return false; 335 return false;
(...skipping 18 matching lines...) Expand all
349 indent(4)}} 354 indent(4)}}
350 {{class_name}}::{{method.name}}Callback callback = 355 {{class_name}}::{{method.name}}Callback callback =
351 {{class_name}}_{{method.name}}_ProxyToResponder::CreateCallback( 356 {{class_name}}_{{method.name}}_ProxyToResponder::CreateCallback(
352 message->request_id(), 357 message->request_id(),
353 message->has_flag(mojo::Message::kFlagIsSync), 358 message->has_flag(mojo::Message::kFlagIsSync),
354 responder, 359 responder,
355 serialization_context_.group_controller); 360 serialization_context_.group_controller);
356 // A null |sink_| means no implementation was bound. 361 // A null |sink_| means no implementation was bound.
357 assert(sink_); 362 assert(sink_);
358 TRACE_EVENT0("mojom", "{{class_name}}::{{method.name}}"); 363 TRACE_EVENT0("mojom", "{{class_name}}::{{method.name}}");
364 mojo::internal::MessageDispatchContext context(message);
359 sink_->{{method.name}}( 365 sink_->{{method.name}}(
360 {%- if method.parameters -%}{{pass_params(method.parameters)}}, {% endif -%}call back); 366 {%- if method.parameters -%}{{pass_params(method.parameters)}}, {% endif -%}call back);
361 return true; 367 return true;
362 {%- else %} 368 {%- else %}
363 break; 369 break;
364 {%- endif %} 370 {%- endif %}
365 } 371 }
366 {%- endfor %} 372 {%- endfor %}
367 } 373 }
368 {%- endif %} 374 {%- endif %}
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 break; 463 break;
458 } 464 }
459 465
460 // Unrecognized message. 466 // Unrecognized message.
461 ReportValidationError( 467 ReportValidationError(
462 &validation_context, 468 &validation_context,
463 mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD); 469 mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD);
464 return false; 470 return false;
465 } 471 }
466 {%- endif -%} 472 {%- endif -%}
OLDNEW
« no previous file with comments | « mojo/public/interfaces/bindings/tests/test_bad_messages.mojom ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698