Index: mojo/public/cpp/bindings/strong_binding.h |
diff --git a/mojo/public/cpp/bindings/strong_binding.h b/mojo/public/cpp/bindings/strong_binding.h |
index 5c48eae08b195d28a7e171585f1e4ea04e74841f..adc96fa30b049ec81e07f551ff0317a2d26f8c6b 100644 |
--- a/mojo/public/cpp/bindings/strong_binding.h |
+++ b/mojo/public/cpp/bindings/strong_binding.h |
@@ -7,6 +7,7 @@ |
#include <utility> |
+#include "base/bind.h" |
#include "base/logging.h" |
#include "base/macros.h" |
#include "mojo/public/cpp/bindings/binding.h" |
@@ -72,19 +73,22 @@ class StrongBinding { |
void Bind(ScopedMessagePipeHandle handle) { |
DCHECK(!binding_.is_bound()); |
binding_.Bind(std::move(handle)); |
- binding_.set_connection_error_handler([this]() { OnConnectionError(); }); |
+ binding_.set_connection_error_handler( |
+ base::Bind(&StrongBinding::OnConnectionError, base::Unretained(this))); |
} |
void Bind(InterfacePtr<Interface>* ptr) { |
DCHECK(!binding_.is_bound()); |
binding_.Bind(ptr); |
- binding_.set_connection_error_handler([this]() { OnConnectionError(); }); |
+ binding_.set_connection_error_handler( |
+ base::Bind(&StrongBinding::OnConnectionError, base::Unretained(this))); |
} |
void Bind(InterfaceRequest<Interface> request) { |
DCHECK(!binding_.is_bound()); |
binding_.Bind(std::move(request)); |
- binding_.set_connection_error_handler([this]() { OnConnectionError(); }); |
+ binding_.set_connection_error_handler( |
+ base::Bind(&StrongBinding::OnConnectionError, base::Unretained(this))); |
} |
bool WaitForIncomingMethodCall() { |
@@ -105,11 +109,16 @@ class StrongBinding { |
internal::Router* internal_router() { return binding_.internal_router(); } |
void OnConnectionError() { |
- connection_error_handler_.Run(); |
+ RunConnectionErrorHandler(); |
yzshen1
2016/06/18 00:01:18
nit: maybe no need to have such a helper because t
Ken Rockot(use gerrit already)
2016/06/18 03:24:26
Oops, done.
|
delete binding_.impl(); |
} |
private: |
+ void RunConnectionErrorHandler() { |
+ if (!connection_error_handler_.is_null()) |
+ connection_error_handler_.Run(); |
+ } |
+ |
Closure connection_error_handler_; |
Binding<Interface> binding_; |