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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
index 17f75b6f08a47340eed2b2ca4d5e5b5add7c47ad..2c8a0646bb06d490ada8f815f25e4d876147f01c 100644
--- a/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
+++ b/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl
@@ -45,24 +45,39 @@ params->{{param.name}}
{%- endmacro %}
{%- macro build_message(params_name, parameters) -%}
+ {# TODO(yzshen): Consider refactoring to share code with
+ struct_serialization_definition.tmpl #}
{{params_name}}* params =
{{params_name}}::New(builder.buffer());
{#--- Sets #}
{% for param in parameters %}
{%- if param.kind|is_object_kind %}
+{%- if param.kind|is_any_array_kind %}
+ mojo::SerializeArray_<{{param.kind|get_array_validate_params|indent(24)}}>(
+ mojo::internal::Forward(in_{{param.name}}), builder.buffer(), &params->{{param.name}}.ptr);
+{%- else %}
Serialize_(mojo::internal::Forward(in_{{param.name}}), builder.buffer(), &params->{{param.name}}.ptr);
-{%- elif param.kind|is_interface_kind %}
- if (!in_{{param.name}}.get()) {
- params->{{param.name}} = mojo::MessagePipeHandle();
- } else {
- // Delegate handle.
- params->{{param.name}} = in_{{param.name}}.PassMessagePipe().release();
- }
-{%- elif param.kind|is_interface_request_kind %}
+{%- endif %}
+{%- if not param.kind|is_nullable_kind %}
+ MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
+ mojo::internal::IsNonNullableValidationEnabled() &&
+ !params->{{param.name}}.ptr,
+ mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER);
+{%- endif %}
+{%- elif param.kind|is_any_handle_kind %}
+{%- if param.kind|is_interface_kind or
+ param.kind|is_interface_request_kind %}
// Delegate handle.
params->{{param.name}} = in_{{param.name}}.PassMessagePipe().release();
-{%- elif param.kind|is_any_handle_kind %}
+{%- else %}
params->{{param.name}} = in_{{param.name}}.release();
+{%- endif %}
+{%- if not param.kind|is_nullable_kind %}
+ MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(
+ mojo::internal::IsNonNullableValidationEnabled() &&
+ !params->{{param.name}}.is_valid(),
+ mojo::internal::VALIDATION_ERROR_UNEXPECTED_INVALID_HANDLE);
+{%- endif %}
{%- else %}
params->{{param.name}} = in_{{param.name}};
{%- endif %}

Powered by Google App Engine
This is Rietveld 408576698