Index: chrome/browser/metrics/leak_detector/leak_detector_remote_controller.cc |
diff --git a/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.cc b/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.cc |
index 669b14c40a8e98b1157e6e79eeba4051674441b5..c99d9b54c42d9eae8f699968bf7e98b734fb8e46 100644 |
--- a/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.cc |
+++ b/chrome/browser/metrics/leak_detector/leak_detector_remote_controller.cc |
@@ -4,8 +4,11 @@ |
#include "chrome/browser/metrics/leak_detector/leak_detector_remote_controller.h" |
+#include "base/bind.h" |
+#include "base/callback.h" |
#include "components/metrics/leak_detector/protobuf_to_mojo_converter.h" |
#include "content/public/browser/browser_thread.h" |
+#include "mojo/public/cpp/bindings/strong_binding.h" |
namespace metrics { |
@@ -23,7 +26,14 @@ LeakDetectorRemoteController::~LeakDetectorRemoteController() {} |
// static |
void LeakDetectorRemoteController::Create(mojom::LeakDetectorRequest request) { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
- new LeakDetectorRemoteController(std::move(request)); |
+ std::unique_ptr<LeakDetectorRemoteController> controller = |
+ base::WrapUnique(new LeakDetectorRemoteController); |
+ base::Closure error_handler = |
+ base::Bind(&LeakDetectorRemoteController::OnRemoteProcessShutdown, |
+ base::Unretained(controller.get())); |
+ auto binding = |
+ mojo::MakeStrongBinding(std::move(controller), std::move(request)); |
+ binding->set_connection_error_handler(error_handler); |
} |
void LeakDetectorRemoteController::GetParams( |
@@ -68,14 +78,8 @@ void LeakDetectorRemoteController::OnRemoteProcessShutdown() { |
} |
} |
-LeakDetectorRemoteController::LeakDetectorRemoteController( |
- mojom::LeakDetectorRequest request) |
- : binding_(this, std::move(request)), |
- leak_detector_enabled_on_remote_process_(false) { |
- binding_.set_connection_error_handler( |
- base::Bind(&LeakDetectorRemoteController::OnRemoteProcessShutdown, |
- base::Unretained(this))); |
-} |
+LeakDetectorRemoteController::LeakDetectorRemoteController() |
+ : leak_detector_enabled_on_remote_process_(false) {} |
// static |
void LeakDetectorRemoteController::SetLocalControllerInstance( |