Index: device/battery/battery_monitor_impl.cc |
diff --git a/device/battery/battery_monitor_impl.cc b/device/battery/battery_monitor_impl.cc |
index e27f043bf5a0afbc9640aeadd77d22ebd63d4081..76511153514e47e5e42960e84a91d5c3ca4363e4 100644 |
--- a/device/battery/battery_monitor_impl.cc |
+++ b/device/battery/battery_monitor_impl.cc |
@@ -8,14 +8,17 @@ |
#include "base/bind.h" |
#include "base/logging.h" |
+#include "base/memory/ptr_util.h" |
#include "mojo/public/cpp/bindings/strong_binding.h" |
namespace device { |
// static |
void BatteryMonitorImpl::Create(BatteryMonitorRequest request) { |
- mojo::MakeStrongBinding(base::MakeUnique<BatteryMonitorImpl>(), |
- std::move(request)); |
+ auto* impl = new BatteryMonitorImpl; |
+ auto binding = |
+ mojo::MakeStrongBinding(base::WrapUnique(impl), std::move(request)); |
+ impl->binding_ = binding; |
} |
BatteryMonitorImpl::BatteryMonitorImpl() : status_to_report_(false) { |
@@ -32,7 +35,7 @@ void BatteryMonitorImpl::QueryNextStatus( |
const QueryNextStatusCallback& callback) { |
if (!callback_.is_null()) { |
DVLOG(1) << "Overlapped call to QueryNextStatus!"; |
- delete this; |
+ binding_->Close(); |
return; |
} |
callback_ = callback; |