| Index: mojo/public/cpp/bindings/lib/router.cc
|
| diff --git a/mojo/public/cpp/bindings/lib/router.cc b/mojo/public/cpp/bindings/lib/router.cc
|
| index da1e7e122024496d9e1f0433497d3712af591573..e64f1fa0a1224100b615ad83df28d0b21b755a9c 100644
|
| --- a/mojo/public/cpp/bindings/lib/router.cc
|
| +++ b/mojo/public/cpp/bindings/lib/router.cc
|
| @@ -11,7 +11,7 @@ namespace internal {
|
|
|
| // ----------------------------------------------------------------------------
|
|
|
| -class ResponderThunk : public MessageReceiver {
|
| +class ResponderThunk : public MessageReceiverWithStatus {
|
| public:
|
| explicit ResponderThunk(const SharedData<Router*>& router)
|
| : router_(router), accept_was_invoked_(false) {}
|
| @@ -44,6 +44,12 @@ class ResponderThunk : public MessageReceiver {
|
| return result;
|
| }
|
|
|
| + // MessageReceiverWithStatus implementation:
|
| + bool IsValid() override {
|
| + Router* router = router_.value();
|
| + return router && !router->encountered_error() && router->is_valid();
|
| + }
|
| +
|
| private:
|
| SharedData<Router*> router_;
|
| bool accept_was_invoked_;
|
| @@ -118,7 +124,7 @@ void Router::EnableTestingMode() {
|
| bool Router::HandleIncomingMessage(Message* message) {
|
| if (message->has_flag(kMessageExpectsResponse)) {
|
| if (incoming_receiver_) {
|
| - MessageReceiver* responder = new ResponderThunk(weak_self_);
|
| + MessageReceiverWithStatus* responder = new ResponderThunk(weak_self_);
|
| bool ok = incoming_receiver_->AcceptWithResponder(message, responder);
|
| if (!ok)
|
| delete responder;
|
|
|