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

Unified Diff: mojo/public/cpp/bindings/lib/router.h

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/router.h
diff --git a/mojo/public/cpp/bindings/lib/router.h b/mojo/public/cpp/bindings/lib/router.h
index 2f5e8e2a971366c0ddc04895635be9d0565b29e5..648506607a0afa027a0fe730d53e70e046c877ae 100644
--- a/mojo/public/cpp/bindings/lib/router.h
+++ b/mojo/public/cpp/bindings/lib/router.h
@@ -17,6 +17,7 @@
#include "base/single_thread_task_runner.h"
#include "base/threading/thread_checker.h"
#include "mojo/public/cpp/bindings/callback.h"
+#include "mojo/public/cpp/bindings/error.h"
#include "mojo/public/cpp/bindings/lib/connector.h"
#include "mojo/public/cpp/bindings/lib/filter_chain.h"
@@ -39,6 +40,12 @@ class Router : public MessageReceiverWithResponder {
incoming_receiver_ = receiver;
}
+ // Sets the interface name for this Router. Used only for debugging.
+ void set_interface_name(const std::string& name) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ interface_name_ = name;
+ }
+
// Sets the error handler to receive notifications when an error is
// encountered while reading from the pipe or waiting to read from the pipe.
void set_connection_error_handler(const Closure& error_handler) {
@@ -71,15 +78,16 @@ class Router : public MessageReceiverWithResponder {
return connector_.PassMessagePipe();
}
- void RaiseError() {
+ void RaiseError(Error error) {
DCHECK(thread_checker_.CalledOnValidThread());
- connector_.RaiseError();
+ connector_.RaiseError(std::move(error));
}
// MessageReceiver implementation:
- bool Accept(Message* message) override;
+ bool Accept(Message* message, Error* error) override;
bool AcceptWithResponder(Message* message,
- MessageReceiver* responder) override;
+ MessageReceiver* responder,
+ Error* error) override;
// Blocks the current thread until the first incoming method call, i.e.,
// either a call to a client method or a callback method, or |deadline|.
@@ -141,15 +149,15 @@ class Router : public MessageReceiverWithResponder {
~HandleIncomingMessageThunk() override;
// MessageReceiver implementation:
- bool Accept(Message* message) override;
+ bool Accept(Message* message, Error* error) override;
private:
Router* router_;
};
- bool HandleIncomingMessage(Message* message);
+ bool HandleIncomingMessage(Message* message, Error* error);
void HandleQueuedMessages();
- bool HandleMessageInternal(Message* message);
+ bool HandleMessageInternal(Message* message, Error* error);
void OnConnectionError();
@@ -161,6 +169,7 @@ class Router : public MessageReceiverWithResponder {
SyncResponseMap sync_responses_;
uint64_t next_request_id_;
bool testing_mode_;
+ std::string interface_name_;
std::queue<std::unique_ptr<Message>> pending_messages_;
// Whether a task has been posted to trigger processing of
// |pending_messages_|.

Powered by Google App Engine
This is Rietveld 408576698