Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |