Chromium Code Reviews| 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 308c8b67a5060845834470782594e599e915e6a6..d7ff69f16bad9e183305f808f2a1e905002ac939 100644 |
| --- a/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl |
| +++ b/mojo/public/tools/bindings/generators/cpp_templates/interface_definition.tmpl |
| @@ -221,16 +221,25 @@ bool {{class_name}}Stub::AcceptWithResponder( |
| bool {{class_name}}RequestValidator::Accept(mojo::Message* message) { |
| {%- if interface.methods %} |
| + if (message->has_flag(mojo::internal::kMessageIsResponse)) { |
| + ReportValidationError( |
| + mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_INVALID_FLAG_COMBINATION); |
|
yzshen1
2015/03/03 18:05:37
(1) Do you think we should rename this error? -- b
rudominer
2015/03/04 00:12:01
Let's do this in a separate CL. I filed b/463684
|
| + return false; |
| + } |
| switch (message->header()->name) { |
| {%- for method in interface.methods %} |
| case internal::k{{class_name}}_{{method.name}}_Name: { |
| {%- if method.response_parameters != None %} |
| - if (!message->has_flag(mojo::internal::kMessageExpectsResponse)) |
| - break; |
| + if (!message->has_flag(mojo::internal::kMessageExpectsResponse)) { |
| + ReportValidationError( |
| + mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_INVALID_FLAG_COMBINATION); |
| + return false; |
| + } |
| {%- else %} |
| - if (message->has_flag(mojo::internal::kMessageExpectsResponse) || |
| - message->has_flag(mojo::internal::kMessageIsResponse)) { |
| - break; |
| + if (message->has_flag(mojo::internal::kMessageExpectsResponse)) { |
| + ReportValidationError( |
| + mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_INVALID_FLAG_COMBINATION); |
| + return false; |
| } |
| {%- endif %} |
| mojo::internal::BoundsChecker bounds_checker( |
| @@ -243,6 +252,12 @@ bool {{class_name}}RequestValidator::Accept(mojo::Message* message) { |
| break; |
| } |
| {%- endfor %} |
| + default: { |
| + // Unrecognized message. |
| + ReportValidationError( |
| + mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD); |
| + return false; |
| + } |
| } |
| {%- endif %} |
| @@ -258,11 +273,14 @@ bool {{class_name}}RequestValidator::Accept(mojo::Message* message) { |
| bool {{class_name}}ResponseValidator::Accept(mojo::Message* message) { |
| {%- if interface.methods %} |
| + if (!message->has_flag(mojo::internal::kMessageIsResponse)) { |
| + ReportValidationError( |
| + mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_INVALID_FLAG_COMBINATION); |
| + return false; |
| + } |
| switch (message->header()->name) { |
| {%- for method in interface.methods if method.response_parameters != None %} |
| case internal::k{{class_name}}_{{method.name}}_Name: { |
| - if (!message->has_flag(mojo::internal::kMessageIsResponse)) |
| - break; |
| mojo::internal::BoundsChecker bounds_checker( |
| message->payload(), message->payload_num_bytes(), |
| message->handles()->size()); |
| @@ -273,6 +291,12 @@ bool {{class_name}}ResponseValidator::Accept(mojo::Message* message) { |
| break; |
| } |
| {%- endfor %} |
| + default: { |
| + // Unrecognized message. |
| + ReportValidationError( |
| + mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD); |
| + return false; |
| + } |
| } |
| {%- endif %} |