Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Side by Side Diff: components/component_updater/test/url_request_post_interceptor.cc

Issue 565363002: Implement support for fallback update check urls in the component updater (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/component_updater/test/url_request_post_interceptor.h" 5 #include "components/component_updater/test/url_request_post_interceptor.h"
6 6
7 #include "base/files/file_util.h" 7 #include "base/files/file_util.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "components/component_updater/test/test_configurator.h" 10 #include "components/component_updater/test/test_configurator.h"
11 #include "net/base/upload_bytes_element_reader.h" 11 #include "net/base/upload_bytes_element_reader.h"
12 #include "net/url_request/url_request.h" 12 #include "net/url_request/url_request.h"
13 #include "net/url_request/url_request_filter.h" 13 #include "net/url_request/url_request_filter.h"
14 #include "net/url_request/url_request_interceptor.h" 14 #include "net/url_request/url_request_interceptor.h"
15 #include "net/url_request/url_request_simple_job.h" 15 #include "net/url_request/url_request_simple_job.h"
16 #include "net/url_request/url_request_test_util.h" 16 #include "net/url_request/url_request_test_util.h"
17 17
18 namespace component_updater { 18 namespace component_updater {
19 19
20 // Returns a canned response. 20 // Returns a canned response.
21 class URLRequestMockJob : public net::URLRequestSimpleJob { 21 class URLRequestMockJob : public net::URLRequestSimpleJob {
22 public: 22 public:
23 URLRequestMockJob(net::URLRequest* request, 23 URLRequestMockJob(net::URLRequest* request,
24 net::NetworkDelegate* network_delegate, 24 net::NetworkDelegate* network_delegate,
25 const std::string& response) 25 int response_code,
26 const std::string& response_body)
26 : net::URLRequestSimpleJob(request, network_delegate), 27 : net::URLRequestSimpleJob(request, network_delegate),
27 response_(response) {} 28 response_code_(response_code),
29 response_body_(response_body) {}
28 30
29 protected: 31 protected:
30 virtual int GetResponseCode() const OVERRIDE { return 200; } 32 virtual int GetResponseCode() const OVERRIDE { return response_code_; }
31 33
32 virtual int GetData(std::string* mime_type, 34 virtual int GetData(std::string* mime_type,
33 std::string* charset, 35 std::string* charset,
34 std::string* data, 36 std::string* data,
35 const net::CompletionCallback& callback) const OVERRIDE { 37 const net::CompletionCallback& callback) const OVERRIDE {
36 mime_type->assign("text/plain"); 38 mime_type->assign("text/plain");
37 charset->assign("US-ASCII"); 39 charset->assign("US-ASCII");
38 data->assign(response_); 40 data->assign(response_body_);
39 return net::OK; 41 return net::OK;
40 } 42 }
41 43
42 private: 44 private:
43 virtual ~URLRequestMockJob() {} 45 virtual ~URLRequestMockJob() {}
44 46
45 std::string response_; 47 int response_code_;
48 std::string response_body_;
46 DISALLOW_COPY_AND_ASSIGN(URLRequestMockJob); 49 DISALLOW_COPY_AND_ASSIGN(URLRequestMockJob);
47 }; 50 };
48 51
49 URLRequestPostInterceptor::URLRequestPostInterceptor( 52 URLRequestPostInterceptor::URLRequestPostInterceptor(
50 const GURL& url, 53 const GURL& url,
51 const scoped_refptr<base::SequencedTaskRunner>& io_task_runner) 54 const scoped_refptr<base::SequencedTaskRunner>& io_task_runner)
52 : url_(url), io_task_runner_(io_task_runner), hit_count_(0) { 55 : url_(url), io_task_runner_(io_task_runner), hit_count_(0) {
53 } 56 }
54 57
55 URLRequestPostInterceptor::~URLRequestPostInterceptor() { 58 URLRequestPostInterceptor::~URLRequestPostInterceptor() {
56 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 59 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
57 ClearExpectations(); 60 ClearExpectations();
58 } 61 }
59 62
60 void URLRequestPostInterceptor::ClearExpectations() { 63 void URLRequestPostInterceptor::ClearExpectations() {
61 while (!expectations_.empty()) { 64 while (!expectations_.empty()) {
62 Expectation expectation(expectations_.front()); 65 Expectation expectation(expectations_.front());
63 delete expectation.first; 66 delete expectation.first;
64 expectations_.pop(); 67 expectations_.pop();
65 } 68 }
66 } 69 }
67 70
68 GURL URLRequestPostInterceptor::GetUrl() const { 71 GURL URLRequestPostInterceptor::GetUrl() const {
69 return url_; 72 return url_;
70 } 73 }
71 74
72 bool URLRequestPostInterceptor::ExpectRequest( 75 bool URLRequestPostInterceptor::ExpectRequest(
73 class RequestMatcher* request_matcher) { 76 class RequestMatcher* request_matcher) {
74 expectations_.push(std::make_pair(request_matcher, "")); 77 expectations_.push(std::make_pair(request_matcher,
78 ExpectationResponse(kResponseCode200, "")));
75 return true; 79 return true;
76 } 80 }
77 81
82 bool URLRequestPostInterceptor::ExpectRequest(
83 class RequestMatcher* request_matcher,
84 int response_code) {
85 expectations_.push(
86 std::make_pair(request_matcher, ExpectationResponse(response_code, "")));
87 return true;
88 }
89
78 bool URLRequestPostInterceptor::ExpectRequest( 90 bool URLRequestPostInterceptor::ExpectRequest(
79 class RequestMatcher* request_matcher, 91 class RequestMatcher* request_matcher,
80 const base::FilePath& filepath) { 92 const base::FilePath& filepath) {
81 std::string response; 93 std::string response;
82 if (filepath.empty() || !base::ReadFileToString(filepath, &response)) 94 if (filepath.empty() || !base::ReadFileToString(filepath, &response))
83 return false; 95 return false;
84 expectations_.push(std::make_pair(request_matcher, response)); 96
97 expectations_.push(std::make_pair(
98 request_matcher, ExpectationResponse(kResponseCode200, response)));
85 return true; 99 return true;
86 } 100 }
87 101
88 int URLRequestPostInterceptor::GetHitCount() const { 102 int URLRequestPostInterceptor::GetHitCount() const {
89 base::AutoLock auto_lock(interceptor_lock_); 103 base::AutoLock auto_lock(interceptor_lock_);
90 return hit_count_; 104 return hit_count_;
91 } 105 }
92 106
93 int URLRequestPostInterceptor::GetCount() const { 107 int URLRequestPostInterceptor::GetCount() const {
94 base::AutoLock auto_lock(interceptor_lock_); 108 base::AutoLock auto_lock(interceptor_lock_);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 for (InterceptorMap::iterator it = interceptors_.begin(); 154 for (InterceptorMap::iterator it = interceptors_.begin();
141 it != interceptors_.end(); 155 it != interceptors_.end();
142 ++it) 156 ++it)
143 delete (*it).second; 157 delete (*it).second;
144 net::URLRequestFilter::GetInstance()->RemoveHostnameHandler(scheme_, 158 net::URLRequestFilter::GetInstance()->RemoveHostnameHandler(scheme_,
145 hostname_); 159 hostname_);
146 } 160 }
147 161
148 void OnCreateInterceptor(URLRequestPostInterceptor* interceptor) { 162 void OnCreateInterceptor(URLRequestPostInterceptor* interceptor) {
149 DCHECK(io_task_runner_->RunsTasksOnCurrentThread()); 163 DCHECK(io_task_runner_->RunsTasksOnCurrentThread());
150 CHECK(interceptors_.find(interceptor->GetUrl()) == interceptors_.end()); 164 DCHECK(interceptors_.find(interceptor->GetUrl()) == interceptors_.end());
151 165
152 interceptors_.insert(std::make_pair(interceptor->GetUrl(), interceptor)); 166 interceptors_.insert(std::make_pair(interceptor->GetUrl(), interceptor));
153 } 167 }
154 168
155 private: 169 private:
156 virtual ~Delegate() {} 170 virtual ~Delegate() {}
157 171
158 virtual net::URLRequestJob* MaybeInterceptRequest( 172 virtual net::URLRequestJob* MaybeInterceptRequest(
159 net::URLRequest* request, 173 net::URLRequest* request,
160 net::NetworkDelegate* network_delegate) const OVERRIDE { 174 net::NetworkDelegate* network_delegate) const OVERRIDE {
(...skipping 28 matching lines...) Expand all
189 const std::string request_body(reader->bytes()); 203 const std::string request_body(reader->bytes());
190 204
191 { 205 {
192 base::AutoLock auto_lock(interceptor->interceptor_lock_); 206 base::AutoLock auto_lock(interceptor->interceptor_lock_);
193 interceptor->requests_.push_back(request_body); 207 interceptor->requests_.push_back(request_body);
194 if (interceptor->expectations_.empty()) 208 if (interceptor->expectations_.empty())
195 return NULL; 209 return NULL;
196 const URLRequestPostInterceptor::Expectation& expectation( 210 const URLRequestPostInterceptor::Expectation& expectation(
197 interceptor->expectations_.front()); 211 interceptor->expectations_.front());
198 if (expectation.first->Match(request_body)) { 212 if (expectation.first->Match(request_body)) {
199 const std::string response(expectation.second); 213 const int response_code(expectation.second.response_code);
214 const std::string response_body(expectation.second.response_body);
200 delete expectation.first; 215 delete expectation.first;
201 interceptor->expectations_.pop(); 216 interceptor->expectations_.pop();
202 ++interceptor->hit_count_; 217 ++interceptor->hit_count_;
203 218
204 return new URLRequestMockJob(request, network_delegate, response); 219 return new URLRequestMockJob(
220 request, network_delegate, response_code, response_body);
205 } 221 }
206 } 222 }
207 223
208 return NULL; 224 return NULL;
209 } 225 }
210 226
211 typedef std::map<GURL, URLRequestPostInterceptor*> InterceptorMap; 227 typedef std::map<GURL, URLRequestPostInterceptor*> InterceptorMap;
212 InterceptorMap interceptors_; 228 InterceptorMap interceptors_;
213 229
214 const std::string scheme_; 230 const std::string scheme_;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 const scoped_refptr<base::SequencedTaskRunner>& io_task_runner) 285 const scoped_refptr<base::SequencedTaskRunner>& io_task_runner)
270 : URLRequestPostInterceptorFactory(POST_INTERCEPT_SCHEME, 286 : URLRequestPostInterceptorFactory(POST_INTERCEPT_SCHEME,
271 POST_INTERCEPT_HOSTNAME, 287 POST_INTERCEPT_HOSTNAME,
272 io_task_runner) { 288 io_task_runner) {
273 } 289 }
274 290
275 InterceptorFactory::~InterceptorFactory() { 291 InterceptorFactory::~InterceptorFactory() {
276 } 292 }
277 293
278 URLRequestPostInterceptor* InterceptorFactory::CreateInterceptor() { 294 URLRequestPostInterceptor* InterceptorFactory::CreateInterceptor() {
295 return CreateInterceptorForPath(POST_INTERCEPT_PATH);
296 }
297
298 URLRequestPostInterceptor* InterceptorFactory::CreateInterceptorForPath(
299 const char* url_path) {
279 return URLRequestPostInterceptorFactory::CreateInterceptor( 300 return URLRequestPostInterceptorFactory::CreateInterceptor(
280 base::FilePath::FromUTF8Unsafe(POST_INTERCEPT_PATH)); 301 base::FilePath::FromUTF8Unsafe(url_path));
281 } 302 }
282 303
283 } // namespace component_updater 304 } // namespace component_updater
OLDNEW
« no previous file with comments | « components/component_updater/test/url_request_post_interceptor.h ('k') | components/component_updater/update_checker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698