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

Side by Side Diff: net/url_request/test_url_fetcher_factory.cc

Issue 60923002: [sync] Allow FakeURLFetcher to return an arbitrary URLRequestStatus (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Set correct net::Error, update example. Created 7 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/url_request/test_url_fetcher_factory.h" 5 #include "net/url_request/test_url_fetcher_factory.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
11 #include "base/memory/weak_ptr.h" 11 #include "base/memory/weak_ptr.h"
12 #include "base/message_loop/message_loop.h" 12 #include "base/message_loop/message_loop.h"
13 #include "net/base/host_port_pair.h" 13 #include "net/base/host_port_pair.h"
14 #include "net/base/net_errors.h"
14 #include "net/http/http_response_headers.h" 15 #include "net/http/http_response_headers.h"
15 #include "net/url_request/url_fetcher_delegate.h" 16 #include "net/url_request/url_fetcher_delegate.h"
16 #include "net/url_request/url_fetcher_impl.h" 17 #include "net/url_request/url_fetcher_impl.h"
17 #include "net/url_request/url_fetcher_response_writer.h" 18 #include "net/url_request/url_fetcher_response_writer.h"
18 #include "net/url_request/url_request_status.h" 19 #include "net/url_request/url_request_status.h"
19 20
20 namespace net { 21 namespace net {
21 22
22 ScopedURLFetcherFactory::ScopedURLFetcherFactory( 23 ScopedURLFetcherFactory::ScopedURLFetcherFactory(
23 URLFetcherFactory* factory) { 24 URLFetcherFactory* factory) {
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 } 277 }
277 278
278 void TestURLFetcherFactory::SetDelegateForTests( 279 void TestURLFetcherFactory::SetDelegateForTests(
279 TestURLFetcherDelegateForTests* delegate_for_tests) { 280 TestURLFetcherDelegateForTests* delegate_for_tests) {
280 delegate_for_tests_ = delegate_for_tests; 281 delegate_for_tests_ = delegate_for_tests;
281 } 282 }
282 283
283 FakeURLFetcher::FakeURLFetcher(const GURL& url, 284 FakeURLFetcher::FakeURLFetcher(const GURL& url,
284 URLFetcherDelegate* d, 285 URLFetcherDelegate* d,
285 const std::string& response_data, 286 const std::string& response_data,
286 HttpStatusCode response_code) 287 HttpStatusCode response_code,
288 URLRequestStatus::Status status)
287 : TestURLFetcher(0, url, d), 289 : TestURLFetcher(0, url, d),
288 weak_factory_(this) { 290 weak_factory_(this) {
289 set_status(URLRequestStatus( 291 net::Error error;
290 // Status is FAILED for HTTP/5xx server errors, and SUCCESS otherwise. 292 switch(status) {
291 response_code >= HTTP_INTERNAL_SERVER_ERROR ? URLRequestStatus::FAILED : 293 case URLRequestStatus::SUCCESS:
292 URLRequestStatus::SUCCESS, 294 case URLRequestStatus::IO_PENDING:
293 0)); 295 error = net::OK;
mmenke 2013/11/06 17:07:21 nit: net:: not needed for any of these, since we'
mmenke 2013/11/06 17:07:21 Should theoretically use "error = ERR_IO_PENDING"
Raghu Simha 2013/11/06 17:31:42 Done.
Raghu Simha 2013/11/06 17:31:42 Done.
296 break;
297 case URLRequestStatus::CANCELED:
298 error = net::ERR_ABORTED;
299 break;
300 case URLRequestStatus::FAILED:
301 error = net::ERR_FAILED;
302 break;
303 default:
304 NOTREACHED();
305 break;
mmenke 2013/11/06 17:07:21 If you remove the default case, there will be a co
Raghu Simha 2013/11/06 17:31:42 Default case removed. Done.
306 }
307 set_status(URLRequestStatus(status, error));
294 set_response_code(response_code); 308 set_response_code(response_code);
295 SetResponseString(response_data); 309 SetResponseString(response_data);
296 } 310 }
297 311
298 FakeURLFetcher::~FakeURLFetcher() {} 312 FakeURLFetcher::~FakeURLFetcher() {}
299 313
300 void FakeURLFetcher::Start() { 314 void FakeURLFetcher::Start() {
301 base::MessageLoop::current()->PostTask( 315 base::MessageLoop::current()->PostTask(
302 FROM_HERE, 316 FROM_HERE,
303 base::Bind(&FakeURLFetcher::RunDelegate, weak_factory_.GetWeakPtr())); 317 base::Bind(&FakeURLFetcher::RunDelegate, weak_factory_.GetWeakPtr()));
(...skipping 19 matching lines...) Expand all
323 const FakeURLFetcherCreator& creator) 337 const FakeURLFetcherCreator& creator)
324 : ScopedURLFetcherFactory(this), 338 : ScopedURLFetcherFactory(this),
325 creator_(creator), 339 creator_(creator),
326 default_factory_(default_factory) { 340 default_factory_(default_factory) {
327 } 341 }
328 342
329 scoped_ptr<FakeURLFetcher> FakeURLFetcherFactory::DefaultFakeURLFetcherCreator( 343 scoped_ptr<FakeURLFetcher> FakeURLFetcherFactory::DefaultFakeURLFetcherCreator(
330 const GURL& url, 344 const GURL& url,
331 URLFetcherDelegate* delegate, 345 URLFetcherDelegate* delegate,
332 const std::string& response_data, 346 const std::string& response_data,
333 HttpStatusCode response_code) { 347 HttpStatusCode response_code,
334 return scoped_ptr<FakeURLFetcher>(new FakeURLFetcher(url, 348 URLRequestStatus::Status status) {
335 delegate, 349 return scoped_ptr<FakeURLFetcher>(
336 response_data, 350 new FakeURLFetcher(url, delegate, response_data, response_code, status));
337 response_code));
338 } 351 }
339 352
340 FakeURLFetcherFactory::~FakeURLFetcherFactory() {} 353 FakeURLFetcherFactory::~FakeURLFetcherFactory() {}
341 354
342 URLFetcher* FakeURLFetcherFactory::CreateURLFetcher( 355 URLFetcher* FakeURLFetcherFactory::CreateURLFetcher(
343 int id, 356 int id,
344 const GURL& url, 357 const GURL& url,
345 URLFetcher::RequestType request_type, 358 URLFetcher::RequestType request_type,
346 URLFetcherDelegate* d) { 359 URLFetcherDelegate* d) {
347 FakeResponseMap::const_iterator it = fake_responses_.find(url); 360 FakeResponseMap::const_iterator it = fake_responses_.find(url);
348 if (it == fake_responses_.end()) { 361 if (it == fake_responses_.end()) {
349 if (default_factory_ == NULL) { 362 if (default_factory_ == NULL) {
350 // If we don't have a baked response for that URL we return NULL. 363 // If we don't have a baked response for that URL we return NULL.
351 DLOG(ERROR) << "No baked response for URL: " << url.spec(); 364 DLOG(ERROR) << "No baked response for URL: " << url.spec();
352 return NULL; 365 return NULL;
353 } else { 366 } else {
354 return default_factory_->CreateURLFetcher(id, url, request_type, d); 367 return default_factory_->CreateURLFetcher(id, url, request_type, d);
355 } 368 }
356 } 369 }
357 370
358 scoped_ptr<FakeURLFetcher> fake_fetcher = 371 scoped_ptr<FakeURLFetcher> fake_fetcher =
359 creator_.Run(url, d, it->second.first, it->second.second); 372 creator_.Run(url, d, it->second.response_data,
373 it->second.response_code, it->second.status);
360 // TODO: Make URLFetcherFactory::CreateURLFetcher return a scoped_ptr 374 // TODO: Make URLFetcherFactory::CreateURLFetcher return a scoped_ptr
361 return fake_fetcher.release(); 375 return fake_fetcher.release();
362 } 376 }
363 377
364 void FakeURLFetcherFactory::SetFakeResponse( 378 void FakeURLFetcherFactory::SetFakeResponse(
365 const GURL& url, 379 const GURL& url,
366 const std::string& response_data, 380 const std::string& response_data,
367 HttpStatusCode response_code) { 381 HttpStatusCode response_code,
382 URLRequestStatus::Status status) {
368 // Overwrite existing URL if it already exists. 383 // Overwrite existing URL if it already exists.
369 fake_responses_[url] = std::make_pair(response_data, response_code); 384 FakeURLResponse response;
385 response.response_data = response_data;
386 response.response_code = response_code;
387 response.status = status;
388 fake_responses_[url] = response;
370 } 389 }
371 390
372 void FakeURLFetcherFactory::ClearFakeResponses() { 391 void FakeURLFetcherFactory::ClearFakeResponses() {
373 fake_responses_.clear(); 392 fake_responses_.clear();
374 } 393 }
375 394
376 URLFetcherImplFactory::URLFetcherImplFactory() {} 395 URLFetcherImplFactory::URLFetcherImplFactory() {}
377 396
378 URLFetcherImplFactory::~URLFetcherImplFactory() {} 397 URLFetcherImplFactory::~URLFetcherImplFactory() {}
379 398
380 URLFetcher* URLFetcherImplFactory::CreateURLFetcher( 399 URLFetcher* URLFetcherImplFactory::CreateURLFetcher(
381 int id, 400 int id,
382 const GURL& url, 401 const GURL& url,
383 URLFetcher::RequestType request_type, 402 URLFetcher::RequestType request_type,
384 URLFetcherDelegate* d) { 403 URLFetcherDelegate* d) {
385 return new URLFetcherImpl(url, request_type, d); 404 return new URLFetcherImpl(url, request_type, d);
386 } 405 }
387 406
388 } // namespace net 407 } // namespace net
OLDNEW
« no previous file with comments | « net/url_request/test_url_fetcher_factory.h ('k') | remoting/host/token_validator_factory_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698