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

Unified Diff: mojo/public/cpp/bindings/lib/control_message_handler.cc

Issue 2064903002: Mojo: Report bindings validation errors via MojoNotifyBadMessage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 6 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/cpp/bindings/lib/control_message_handler.cc
diff --git a/mojo/public/cpp/bindings/lib/control_message_handler.cc b/mojo/public/cpp/bindings/lib/control_message_handler.cc
index 1bcd87daf9ef56103b30255ec0a5ce83c2fd51ad..225af31656dd27b666d3984279470120bb3798dd 100644
--- a/mojo/public/cpp/bindings/lib/control_message_handler.cc
+++ b/mojo/public/cpp/bindings/lib/control_message_handler.cc
@@ -9,6 +9,7 @@
#include <utility>
#include "base/logging.h"
+#include "base/macros.h"
#include "mojo/public/cpp/bindings/lib/message_builder.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/interfaces/bindings/interface_control_messages.mojom.h"
@@ -22,33 +23,35 @@ bool ControlMessageHandler::IsControlMessage(const Message* message) {
message->header()->name == kRunOrClosePipeMessageId;
}
-ControlMessageHandler::ControlMessageHandler(uint32_t interface_version)
- : interface_version_(interface_version) {
+ControlMessageHandler::ControlMessageHandler(const char* interface_name,
+ uint32_t interface_version)
+ : interface_name_(interface_name), interface_version_(interface_version) {
}
ControlMessageHandler::~ControlMessageHandler() {
}
-bool ControlMessageHandler::Accept(Message* message) {
+MessageReceiver::Result ControlMessageHandler::Accept(Message* message) {
if (message->header()->name == kRunOrClosePipeMessageId)
return RunOrClosePipe(message);
NOTREACHED();
- return false;
+ return Result::ForUnknownError();
}
-bool ControlMessageHandler::AcceptWithResponder(
+MessageReceiver::Result ControlMessageHandler::AcceptWithResponder(
Message* message,
MessageReceiverWithStatus* responder) {
if (message->header()->name == kRunMessageId)
return Run(message, responder);
NOTREACHED();
- return false;
+ return Result::ForUnknownError();
}
-bool ControlMessageHandler::Run(Message* message,
- MessageReceiverWithStatus* responder) {
+MessageReceiver::Result ControlMessageHandler::Run(
+ Message* message,
+ MessageReceiverWithStatus* responder) {
RunResponseMessageParamsPtr response_params_ptr(
RunResponseMessageParams::New());
response_params_ptr->reserved0 = 16u;
@@ -64,14 +67,15 @@ bool ControlMessageHandler::Run(Message* message,
Serialize<RunResponseMessageParamsPtr>(response_params_ptr, builder.buffer(),
&response_params, &context_);
response_params->EncodePointers();
- bool ok = responder->Accept(builder.message());
- ALLOW_UNUSED_LOCAL(ok);
+
+ ignore_result(responder->Accept(builder.message()));
delete responder;
- return true;
+ return Result::ForSuccess();
}
-bool ControlMessageHandler::RunOrClosePipe(Message* message) {
+MessageReceiver::Result ControlMessageHandler::RunOrClosePipe(
+ Message* message) {
RunOrClosePipeMessageParams_Data* params =
reinterpret_cast<RunOrClosePipeMessageParams_Data*>(
message->mutable_payload());
@@ -80,7 +84,10 @@ bool ControlMessageHandler::RunOrClosePipe(Message* message) {
RunOrClosePipeMessageParamsPtr params_ptr;
Deserialize<RunOrClosePipeMessageParamsPtr>(params, &params_ptr, &context_);
- return interface_version_ >= params_ptr->require_version->version;
+ if (interface_version_ < params_ptr->require_version->version)
+ return Result::ForUnexpectedRequest(interface_name_, message);
+
+ return Result::ForSuccess();
}
} // namespace internal

Powered by Google App Engine
This is Rietveld 408576698