OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/domain_reliability/service.h" | 5 #include "components/domain_reliability/service.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "base/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" |
10 #include "components/domain_reliability/monitor.h" | 10 #include "components/domain_reliability/monitor.h" |
11 #include "net/url_request/url_request_context_getter.h" | 11 #include "net/url_request/url_request_context_getter.h" |
12 | 12 |
13 namespace domain_reliability { | 13 namespace domain_reliability { |
14 | 14 |
15 namespace { | |
16 | |
17 void GetWebUIDataOnNetworkTaskRunner( | |
18 base::WeakPtr<DomainReliabilityMonitor> monitor, | |
19 scoped_ptr<const base::Value>* data_out) { | |
20 if (monitor) | |
21 *data_out = monitor->GetWebUIData(); | |
22 } | |
23 | |
24 void CallGetWebUIDataCallbackAndDeleteDataPointer( | |
25 const base::Callback<void(scoped_ptr<const base::Value>)>& callback, | |
26 scoped_ptr<const base::Value>* data_in) { | |
27 callback.Run(data_in->Pass()); | |
28 delete data_in; | |
29 } | |
30 | |
31 } // namespace | |
32 | |
15 class DomainReliabilityServiceImpl : public DomainReliabilityService { | 33 class DomainReliabilityServiceImpl : public DomainReliabilityService { |
16 public: | 34 public: |
17 explicit DomainReliabilityServiceImpl( | 35 explicit DomainReliabilityServiceImpl( |
18 const std::string& upload_reporter_string) | 36 const std::string& upload_reporter_string) |
19 : upload_reporter_string_(upload_reporter_string) {} | 37 : upload_reporter_string_(upload_reporter_string) {} |
20 | 38 |
21 virtual ~DomainReliabilityServiceImpl() {} | 39 virtual ~DomainReliabilityServiceImpl() {} |
22 | 40 |
23 // DomainReliabilityService implementation: | 41 // DomainReliabilityService implementation: |
24 | 42 |
(...skipping 15 matching lines...) Expand all Loading... | |
40 DCHECK(network_task_runner_); | 58 DCHECK(network_task_runner_); |
41 | 59 |
42 network_task_runner_->PostTaskAndReply( | 60 network_task_runner_->PostTaskAndReply( |
43 FROM_HERE, | 61 FROM_HERE, |
44 base::Bind(&DomainReliabilityMonitor::ClearBrowsingData, | 62 base::Bind(&DomainReliabilityMonitor::ClearBrowsingData, |
45 monitor_, | 63 monitor_, |
46 clear_mode), | 64 clear_mode), |
47 callback); | 65 callback); |
48 } | 66 } |
49 | 67 |
68 virtual void GetWebUIData( | |
69 const base::Callback<void(scoped_ptr<const base::Value>)>& callback) | |
70 const OVERRIDE { | |
71 DCHECK(network_task_runner_); | |
72 | |
73 scoped_ptr<const base::Value>* data = | |
74 new scoped_ptr<const base::Value>(new base::DictionaryValue()); | |
75 network_task_runner_->PostTaskAndReply(FROM_HERE, | |
Bernhard Bauer
2014/06/28 11:16:35
I think you can do this with base::PostTaskAndRepl
Deprecated (see juliatuttle)
2014/06/30 16:58:21
Nah, I can't; it won't let me bind a weak pointer
Bernhard Bauer
2014/06/30 17:26:54
:-( Could you write a wrapper function like this:
| |
76 base::Bind(&GetWebUIDataOnNetworkTaskRunner, | |
77 monitor_, | |
78 data), | |
79 base::Bind(&CallGetWebUIDataCallbackAndDeleteDataPointer, | |
80 callback, | |
81 data)); | |
82 } | |
83 | |
50 private: | 84 private: |
51 std::string upload_reporter_string_; | 85 std::string upload_reporter_string_; |
52 base::WeakPtr<DomainReliabilityMonitor> monitor_; | 86 base::WeakPtr<DomainReliabilityMonitor> monitor_; |
53 scoped_refptr<base::SequencedTaskRunner> network_task_runner_; | 87 scoped_refptr<base::SequencedTaskRunner> network_task_runner_; |
54 }; | 88 }; |
55 | 89 |
56 // static | 90 // static |
57 DomainReliabilityService* DomainReliabilityService::Create( | 91 DomainReliabilityService* DomainReliabilityService::Create( |
58 const std::string& upload_reporter_string) { | 92 const std::string& upload_reporter_string) { |
59 return new DomainReliabilityServiceImpl(upload_reporter_string); | 93 return new DomainReliabilityServiceImpl(upload_reporter_string); |
60 } | 94 } |
61 | 95 |
62 DomainReliabilityService::~DomainReliabilityService() {} | 96 DomainReliabilityService::~DomainReliabilityService() {} |
63 | 97 |
64 DomainReliabilityService::DomainReliabilityService() {} | 98 DomainReliabilityService::DomainReliabilityService() {} |
65 | 99 |
66 } // namespace domain_reliability | 100 } // namespace domain_reliability |
OLD | NEW |