Index: mojo/public/cpp/bindings/lib/validation_util.cc |
diff --git a/mojo/public/cpp/bindings/lib/validation_util.cc b/mojo/public/cpp/bindings/lib/validation_util.cc |
index 944c6541323bdb5aa36edc5268bd9d6bc19e10c0..37b70015c01d02912da39c07fd5ddddc04484a6c 100644 |
--- a/mojo/public/cpp/bindings/lib/validation_util.cc |
+++ b/mojo/public/cpp/bindings/lib/validation_util.cc |
@@ -100,38 +100,6 @@ bool ValidateMessageIsResponse(const Message* message, |
return true; |
} |
-bool ValidateControlRequest(const Message* message, |
- ValidationContext* validation_context) { |
- switch (message->header()->name) { |
- case interface_control::kRunMessageId: |
- return ValidateMessageIsRequestExpectingResponse(message, |
- validation_context) && |
- ValidateMessagePayload< |
- interface_control::internal::RunMessageParams_Data>( |
- message, validation_context); |
- case interface_control::kRunOrClosePipeMessageId: |
- return ValidateMessageIsRequestWithoutResponse(message, |
- validation_context) && |
- ValidateMessagePayload< |
- interface_control::internal::RunOrClosePipeMessageParams_Data>( |
- message, validation_context); |
- } |
- return false; |
-} |
- |
-bool ValidateControlResponse(const Message* message, |
- ValidationContext* validation_context) { |
- if (!ValidateMessageIsResponse(message, validation_context)) |
- return false; |
- switch (message->header()->name) { |
- case interface_control::kRunMessageId: |
- return ValidateMessagePayload< |
- interface_control::internal::RunResponseMessageParams_Data>( |
- message, validation_context); |
- } |
- return false; |
-} |
- |
bool IsHandleOrInterfaceValid(const AssociatedInterface_Data& input) { |
return IsValidInterfaceId(input.interface_id); |
} |
@@ -238,5 +206,35 @@ bool ValidateHandleOrInterface(const Handle_Data& input, |
return false; |
} |
+bool ControlMessageValidator::Accept(Message* message) { |
+ if (ControlMessageHandler::IsControlMessage(message)) { |
+ ValidationContext validation_context( |
+ message->data(), message->data_num_bytes(), message->handles()->size(), |
+ message, "ControlMessageValidator"); |
+ switch (message->header()->name) { |
+ case interface_control::kRunMessageId: |
+ if (message->has_flag(Message::kFlagExpectsResponse)) { |
+ return ValidateMessagePayload< |
+ interface_control::internal::RunMessageParams_Data>( |
+ message, &validation_context); |
+ } |
+ if (message->has_flag(Message::kFlagIsResponse)) { |
+ return ValidateMessagePayload< |
+ interface_control::internal::RunResponseMessageParams_Data>( |
+ message, &validation_context); |
+ } |
+ return false; |
+ case interface_control::kRunOrClosePipeMessageId: |
+ return ValidateMessageIsRequestWithoutResponse(message, |
+ &validation_context) && |
+ ValidateMessagePayload<interface_control::internal:: |
+ RunOrClosePipeMessageParams_Data>( |
+ message, &validation_context); |
+ } |
+ return false; |
+ } |
+ return true; |
+} |
+ |
} // namespace internal |
} // namespace mojo |