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

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

Issue 469393004: Mojo: Add warning of invalid serialization results (in debug build). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 | Annotate | Revision Log
OLDNEW
1 {%- import "interface_macros.tmpl" as interface_macros %} 1 {%- import "interface_macros.tmpl" as interface_macros %}
2 {%- set class_name = interface.name %} 2 {%- set class_name = interface.name %}
3 {%- set proxy_name = interface.name ~ "Proxy" %} 3 {%- set proxy_name = interface.name ~ "Proxy" %}
4 {%- set namespace_as_string = "%s"|format(namespace|replace(".","::")) %} 4 {%- set namespace_as_string = "%s"|format(namespace|replace(".","::")) %}
5 5
6 {%- macro alloc_params(parameters) %} 6 {%- macro alloc_params(parameters) %}
7 {%- for param in parameters %} 7 {%- for param in parameters %}
8 {%- if param.kind|is_object_kind %} 8 {%- if param.kind|is_object_kind %}
9 {{param.kind|cpp_result_type}} p{{loop.index}}; 9 {{param.kind|cpp_result_type}} p{{loop.index}};
10 Deserialize_(params->{{param.name}}.ptr, &p{{loop.index}}); 10 Deserialize_(params->{{param.name}}.ptr, &p{{loop.index}});
(...skipping 27 matching lines...) Expand all
38 mojo::internal::Align(sizeof({{params_name}})); 38 mojo::internal::Align(sizeof({{params_name}}));
39 {#--- Computes #} 39 {#--- Computes #}
40 {%- for param in parameters %} 40 {%- for param in parameters %}
41 {%- if param.kind|is_object_kind %} 41 {%- if param.kind|is_object_kind %}
42 payload_size += GetSerializedSize_(in_{{param.name}}); 42 payload_size += GetSerializedSize_(in_{{param.name}});
43 {%- endif %} 43 {%- endif %}
44 {%- endfor %} 44 {%- endfor %}
45 {%- endmacro %} 45 {%- endmacro %}
46 46
47 {%- macro build_message(params_name, parameters) -%} 47 {%- macro build_message(params_name, parameters) -%}
48 {# TODO(yzshen): Consider refactoring to share code with
49 struct_serialization_definition.tmpl #}
48 {{params_name}}* params = 50 {{params_name}}* params =
49 {{params_name}}::New(builder.buffer()); 51 {{params_name}}::New(builder.buffer());
50 {#--- Sets #} 52 {#--- Sets #}
51 {% for param in parameters %} 53 {% for param in parameters %}
52 {%- if param.kind|is_object_kind %} 54 {%- if param.kind|is_object_kind %}
55 {%- if param.kind|is_any_array_kind %}
56 mojo::SerializeArray_<{{param.kind|get_array_validate_params|indent(24)}}>(
57 mojo::internal::Forward(in_{{param.name}}), builder.buffer(), &params->{{p aram.name}}.ptr);
58 {%- else %}
53 Serialize_(mojo::internal::Forward(in_{{param.name}}), builder.buffer(), &para ms->{{param.name}}.ptr); 59 Serialize_(mojo::internal::Forward(in_{{param.name}}), builder.buffer(), &para ms->{{param.name}}.ptr);
54 {%- elif param.kind|is_interface_kind %} 60 {%- endif %}
55 if (!in_{{param.name}}.get()) { 61 {%- if not param.kind|is_nullable_kind %}
56 params->{{param.name}} = mojo::MessagePipeHandle(); 62 MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
57 } else { 63 mojo::internal::IsNonNullableValidationEnabled() &&
58 // Delegate handle. 64 !params->{{param.name}}.ptr,
59 params->{{param.name}} = in_{{param.name}}.PassMessagePipe().release(); 65 mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER);
60 } 66 {%- endif %}
61 {%- elif param.kind|is_interface_request_kind %} 67 {%- elif param.kind|is_any_handle_kind %}
68 {%- if param.kind|is_interface_kind or
69 param.kind|is_interface_request_kind %}
62 // Delegate handle. 70 // Delegate handle.
63 params->{{param.name}} = in_{{param.name}}.PassMessagePipe().release(); 71 params->{{param.name}} = in_{{param.name}}.PassMessagePipe().release();
64 {%- elif param.kind|is_any_handle_kind %} 72 {%- else %}
65 params->{{param.name}} = in_{{param.name}}.release(); 73 params->{{param.name}} = in_{{param.name}}.release();
74 {%- endif %}
75 {%- if not param.kind|is_nullable_kind %}
76 MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
77 mojo::internal::IsNonNullableValidationEnabled() &&
78 !params->{{param.name}}.is_valid(),
79 mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE);
80 {%- endif %}
66 {%- else %} 81 {%- else %}
67 params->{{param.name}} = in_{{param.name}}; 82 params->{{param.name}} = in_{{param.name}};
68 {%- endif %} 83 {%- endif %}
69 {%- endfor %} 84 {%- endfor %}
70 mojo::Message message; 85 mojo::Message message;
71 params->EncodePointersAndHandles(message.mutable_handles()); 86 params->EncodePointersAndHandles(message.mutable_handles());
72 builder.Finish(&message); 87 builder.Finish(&message);
73 {%- endmacro %} 88 {%- endmacro %}
74 89
75 {#--- Begin #} 90 {#--- Begin #}
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 } 321 }
307 break; 322 break;
308 } 323 }
309 {%- endfor %} 324 {%- endfor %}
310 } 325 }
311 {%- endif %} 326 {%- endif %}
312 327
313 return sink_->Accept(message); 328 return sink_->Accept(message);
314 } 329 }
315 {%- endif -%} 330 {%- endif -%}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698