Index: components/domain_reliability/service.cc |
diff --git a/components/domain_reliability/service.cc b/components/domain_reliability/service.cc |
index eba9ddfaa81d31e7fe72c3b90c85ae6d1d873030..4d675733aaed5ae0ff5ba04fe79f8f5935ab2588 100644 |
--- a/components/domain_reliability/service.cc |
+++ b/components/domain_reliability/service.cc |
@@ -7,11 +7,27 @@ |
#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" |
namespace domain_reliability { |
+namespace { |
+ |
+scoped_ptr<base::Value> GetWebUIDataOnNetworkTaskRunner( |
+ base::WeakPtr<DomainReliabilityMonitor> monitor) { |
+ if (!monitor) { |
+ base::DictionaryValue* dict = new base::DictionaryValue(); |
+ dict->SetString("error", "no_monitor"); |
+ return scoped_ptr<base::Value>(dict); |
+ } |
+ |
+ return monitor->GetWebUIData(); |
+} |
+ |
+} // namespace |
+ |
class DomainReliabilityServiceImpl : public DomainReliabilityService { |
public: |
explicit DomainReliabilityServiceImpl( |
@@ -47,6 +63,18 @@ class DomainReliabilityServiceImpl : public DomainReliabilityService { |
callback); |
} |
+ virtual void GetWebUIData( |
+ const base::Callback<void(scoped_ptr<base::Value>)>& callback) |
+ const OVERRIDE { |
+ DCHECK(network_task_runner_); |
+ |
+ PostTaskAndReplyWithResult( |
+ network_task_runner_, |
+ FROM_HERE, |
+ base::Bind(&GetWebUIDataOnNetworkTaskRunner, monitor_), |
+ callback); |
+ } |
+ |
private: |
std::string upload_reporter_string_; |
base::WeakPtr<DomainReliabilityMonitor> monitor_; |