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 6e52c392ebdd9e17f5ed8d9e8b21fe5cfc5d3e59..3cadeed808817434ccd3af7cababd94d40fd57b1 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 |
@@ -171,6 +171,7 @@ bool {{class_name}}Stub::Accept(mojo::Message* message) { |
switch (message->header()->name) { |
{%- for method in interface.methods %} |
case internal::k{{class_name}}_{{method.name}}_Name: { |
+ mojo::internal::ScopedTaskTracking task_id("mojo.{{namespace_as_string}}.{{class_name}}.{{method.name}}", __FILE__, __LINE__); |
{%- if method.response_parameters == None %} |
internal::{{class_name}}_{{method.name}}_Params_Data* params = |
reinterpret_cast<internal::{{class_name}}_{{method.name}}_Params_Data*>( |
@@ -198,6 +199,7 @@ bool {{class_name}}Stub::AcceptWithResponder( |
switch (message->header()->name) { |
{%- for method in interface.methods %} |
case internal::k{{class_name}}_{{method.name}}_Name: { |
+ mojo::internal::ScopedTaskTracking task_id("mojo::{{namespace_as_string}}::{{class_name}}::{{method.name}}", __FILE__, __LINE__); |
{%- if method.response_parameters != None %} |
internal::{{class_name}}_{{method.name}}_Params_Data* params = |
reinterpret_cast<internal::{{class_name}}_{{method.name}}_Params_Data*>( |
@@ -231,49 +233,32 @@ 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_FLAGS); |
- return false; |
- } |
+ assert(sink_); |
switch (message->header()->name) { |
-{%- for method in interface.methods %} |
+{%- 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)) { |
- ReportValidationError( |
- mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_INVALID_FLAGS); |
+{%- if method.response_parameters != None %} |
+ if (!mojo::internal::ValidateMessageIsRequestExpectingResponse(message)) |
return false; |
- } |
-{%- else %} |
- if (message->has_flag(mojo::internal::kMessageExpectsResponse)) { |
- ReportValidationError( |
- mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_INVALID_FLAGS); |
+{%- else %} |
+ if (!mojo::internal::ValidateMessageIsRequestWithoutResponse(message)) |
return false; |
- } |
-{%- endif %} |
- mojo::internal::BoundsChecker bounds_checker( |
- message->payload(), message->payload_num_bytes(), |
- message->handles()->size()); |
- if (!internal::{{class_name}}_{{method.name}}_Params_Data::Validate( |
- message->payload(), &bounds_checker)) { |
+{%- endif %} |
+ if (!mojo::internal::ValidateMessagePayload< |
+ internal::{{class_name}}_{{method.name}}_Params_Data>(message)) { |
return false; |
} |
- break; |
- } |
-{%- endfor %} |
- default: { |
- // Unrecognized message. |
- ReportValidationError( |
- mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD); |
- return false; |
+ return sink_->Accept(message); |
} |
+{%- endfor %} |
+ default: |
+ break; |
} |
-{%- endif %} |
- assert(sink_); |
- return sink_->Accept(message); |
+ // Unrecognized message. |
+ ReportValidationError( |
+ mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD); |
+ return false; |
} |
{#--- Response validator definitions #} |
@@ -283,35 +268,26 @@ 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_FLAGS); |
+ assert(sink_); |
+ if (!mojo::internal::ValidateMessageIsResponse(message)) |
return false; |
- } |
switch (message->header()->name) { |
-{%- for method in interface.methods if method.response_parameters != None %} |
+{%- for method in interface.methods if method.response_parameters != None %} |
case internal::k{{class_name}}_{{method.name}}_Name: { |
- mojo::internal::BoundsChecker bounds_checker( |
- message->payload(), message->payload_num_bytes(), |
- message->handles()->size()); |
- if (!internal::{{class_name}}_{{method.name}}_ResponseParams_Data::Validate( |
- message->payload(), &bounds_checker)) { |
+ if (!mojo::internal::ValidateMessagePayload< |
+ internal::{{class_name}}_{{method.name}}_ResponseParams_Data>(message)) { |
return false; |
} |
- break; |
- } |
-{%- endfor %} |
- default: { |
- // Unrecognized message. |
- ReportValidationError( |
- mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD); |
- return false; |
+ return sink_->Accept(message); |
} |
+{%- endfor %} |
+ default: |
+ break; |
} |
-{%- endif %} |
- assert(sink_); |
- return sink_->Accept(message); |
+ // Unrecognized message. |
+ ReportValidationError( |
+ mojo::internal::VALIDATION_ERROR_MESSAGE_HEADER_UNKNOWN_METHOD); |
+ return false; |
} |
{%- endif -%} |