Index: components/domain_reliability/service.cc |
diff --git a/components/domain_reliability/service.cc b/components/domain_reliability/service.cc |
index 6e3517a489c1bcaa79563b9350ff0c6d229c729d..7ef6c6e457089f296b161863c532831fa058a11e 100644 |
--- a/components/domain_reliability/service.cc |
+++ b/components/domain_reliability/service.cc |
@@ -7,6 +7,7 @@ |
#include "base/bind.h" |
#include "base/callback.h" |
#include "base/single_thread_task_runner.h" |
+#include "base/task_runner_util.h" |
#include "components/domain_reliability/monitor.h" |
#include "net/url_request/url_request_context_getter.h" |
@@ -14,18 +15,12 @@ namespace domain_reliability { |
namespace { |
-void GetWebUIDataOnNetworkTaskRunner( |
- base::WeakPtr<DomainReliabilityMonitor> monitor, |
- scoped_ptr<const base::Value>* data_out) { |
- if (monitor) |
- *data_out = monitor->GetWebUIData(); |
-} |
+scoped_ptr<const base::Value> MaybeGetWebUIData( |
+ base::WeakPtr<DomainReliabilityMonitor> monitor) { |
+ if (!monitor) |
+ return scoped_ptr<const base::Value>(); |
-void CallGetWebUIDataCallbackAndDeleteDataPointer( |
- const base::Callback<void(scoped_ptr<const base::Value>)>& callback, |
- scoped_ptr<const base::Value>* data_in) { |
- callback.Run(data_in->Pass()); |
- delete data_in; |
+ return monitor->GetWebUIData(); |
} |
} // namespace |
@@ -70,15 +65,12 @@ class DomainReliabilityServiceImpl : public DomainReliabilityService { |
const OVERRIDE { |
DCHECK(network_task_runner_); |
- scoped_ptr<const base::Value>* data = |
- new scoped_ptr<const base::Value>(new base::DictionaryValue()); |
- network_task_runner_->PostTaskAndReply(FROM_HERE, |
- base::Bind(&GetWebUIDataOnNetworkTaskRunner, |
- monitor_, |
- data), |
- base::Bind(&CallGetWebUIDataCallbackAndDeleteDataPointer, |
- callback, |
- data)); |
+ base::PostTaskAndReplyWithResult( |
+ network_task_runner_, |
+ FROM_HERE, |
+ base::Bind(&MaybeGetWebUIData, |
+ monitor_), |
+ callback); |
} |
private: |