| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <stack> | 5 #include <stack> |
| 6 #include <utility> | 6 #include <utility> |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 | 120 |
| 121 AppCacheURLRequestJobTest* test_; | 121 AppCacheURLRequestJobTest* test_; |
| 122 net::HttpResponseInfo received_info_; | 122 net::HttpResponseInfo received_info_; |
| 123 scoped_refptr<net::IOBuffer> received_data_; | 123 scoped_refptr<net::IOBuffer> received_data_; |
| 124 bool did_receive_headers_; | 124 bool did_receive_headers_; |
| 125 int amount_received_; | 125 int amount_received_; |
| 126 int kill_after_amount_received_; | 126 int kill_after_amount_received_; |
| 127 bool kill_with_io_pending_; | 127 bool kill_with_io_pending_; |
| 128 }; | 128 }; |
| 129 | 129 |
| 130 static net::URLRequestJob* MockHttpJobFactory(net::URLRequest* request, | 130 static net::URLRequestJob* MockHttpJobFactory( |
| 131 const std::string& scheme) { | 131 net::URLRequest* request, |
| 132 net::NetworkDelegate* network_delegate, |
| 133 const std::string& scheme) { |
| 132 if (mock_factory_job_) { | 134 if (mock_factory_job_) { |
| 133 net::URLRequestJob* temp = mock_factory_job_; | 135 net::URLRequestJob* temp = mock_factory_job_; |
| 134 mock_factory_job_ = NULL; | 136 mock_factory_job_ = NULL; |
| 135 return temp; | 137 return temp; |
| 136 } else { | 138 } else { |
| 137 return new net::URLRequestErrorJob(request, | 139 return new net::URLRequestErrorJob(request, |
| 140 network_delegate, |
| 138 net::ERR_INTERNET_DISCONNECTED); | 141 net::ERR_INTERNET_DISCONNECTED); |
| 139 } | 142 } |
| 140 } | 143 } |
| 141 | 144 |
| 142 // Helper callback to run a test on our io_thread. The io_thread is spun up | 145 // Helper callback to run a test on our io_thread. The io_thread is spun up |
| 143 // once and reused for all tests. | 146 // once and reused for all tests. |
| 144 template <class Method> | 147 template <class Method> |
| 145 void MethodWrapper(Method method) { | 148 void MethodWrapper(Method method) { |
| 146 SetUpTest(); | 149 SetUpTest(); |
| 147 (this->*method)(); | 150 (this->*method)(); |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 // is delineated with a section header. | 371 // is delineated with a section header. |
| 369 | 372 |
| 370 // Basic ------------------------------------------------------------------- | 373 // Basic ------------------------------------------------------------------- |
| 371 void Basic() { | 374 void Basic() { |
| 372 AppCacheStorage* storage = service_->storage(); | 375 AppCacheStorage* storage = service_->storage(); |
| 373 net::URLRequest request(GURL("http://blah/"), NULL, &empty_context_); | 376 net::URLRequest request(GURL("http://blah/"), NULL, &empty_context_); |
| 374 scoped_refptr<AppCacheURLRequestJob> job; | 377 scoped_refptr<AppCacheURLRequestJob> job; |
| 375 | 378 |
| 376 // Create an instance and see that it looks as expected. | 379 // Create an instance and see that it looks as expected. |
| 377 | 380 |
| 378 job = new AppCacheURLRequestJob(&request, storage); | 381 job = new AppCacheURLRequestJob( |
| 382 &request, empty_context_.network_delegate(), storage); |
| 379 EXPECT_TRUE(job->is_waiting()); | 383 EXPECT_TRUE(job->is_waiting()); |
| 380 EXPECT_FALSE(job->is_delivering_appcache_response()); | 384 EXPECT_FALSE(job->is_delivering_appcache_response()); |
| 381 EXPECT_FALSE(job->is_delivering_network_response()); | 385 EXPECT_FALSE(job->is_delivering_network_response()); |
| 382 EXPECT_FALSE(job->is_delivering_error_response()); | 386 EXPECT_FALSE(job->is_delivering_error_response()); |
| 383 EXPECT_FALSE(job->has_been_started()); | 387 EXPECT_FALSE(job->has_been_started()); |
| 384 EXPECT_FALSE(job->has_been_killed()); | 388 EXPECT_FALSE(job->has_been_killed()); |
| 385 EXPECT_EQ(GURL(), job->manifest_url()); | 389 EXPECT_EQ(GURL(), job->manifest_url()); |
| 386 EXPECT_EQ(kNoCacheId, job->cache_id()); | 390 EXPECT_EQ(kNoCacheId, job->cache_id()); |
| 387 EXPECT_FALSE(job->entry().has_response_id()); | 391 EXPECT_FALSE(job->entry().has_response_id()); |
| 388 | 392 |
| 389 TestFinished(); | 393 TestFinished(); |
| 390 } | 394 } |
| 391 | 395 |
| 392 // DeliveryOrders ----------------------------------------------------- | 396 // DeliveryOrders ----------------------------------------------------- |
| 393 void DeliveryOrders() { | 397 void DeliveryOrders() { |
| 394 AppCacheStorage* storage = service_->storage(); | 398 AppCacheStorage* storage = service_->storage(); |
| 395 net::URLRequest request(GURL("http://blah/"), NULL, &empty_context_); | 399 net::URLRequest request(GURL("http://blah/"), NULL, &empty_context_); |
| 396 scoped_refptr<AppCacheURLRequestJob> job; | 400 scoped_refptr<AppCacheURLRequestJob> job; |
| 397 | 401 |
| 398 // Create an instance, give it a delivery order and see that | 402 // Create an instance, give it a delivery order and see that |
| 399 // it looks as expected. | 403 // it looks as expected. |
| 400 | 404 |
| 401 job = new AppCacheURLRequestJob(&request, storage); | 405 job = new AppCacheURLRequestJob( |
| 406 &request, empty_context_.network_delegate(), storage); |
| 402 job->DeliverErrorResponse(); | 407 job->DeliverErrorResponse(); |
| 403 EXPECT_TRUE(job->is_delivering_error_response()); | 408 EXPECT_TRUE(job->is_delivering_error_response()); |
| 404 EXPECT_FALSE(job->has_been_started()); | 409 EXPECT_FALSE(job->has_been_started()); |
| 405 | 410 |
| 406 job = new AppCacheURLRequestJob(&request, storage); | 411 job = new AppCacheURLRequestJob( |
| 412 &request, empty_context_.network_delegate(), storage); |
| 407 job->DeliverNetworkResponse(); | 413 job->DeliverNetworkResponse(); |
| 408 EXPECT_TRUE(job->is_delivering_network_response()); | 414 EXPECT_TRUE(job->is_delivering_network_response()); |
| 409 EXPECT_FALSE(job->has_been_started()); | 415 EXPECT_FALSE(job->has_been_started()); |
| 410 | 416 |
| 411 job = new AppCacheURLRequestJob(&request, storage); | 417 job = new AppCacheURLRequestJob( |
| 418 &request, empty_context_.network_delegate(), storage); |
| 412 const GURL kManifestUrl("http://blah/"); | 419 const GURL kManifestUrl("http://blah/"); |
| 413 const int64 kCacheId(1); | 420 const int64 kCacheId(1); |
| 414 const int64 kGroupId(1); | 421 const int64 kGroupId(1); |
| 415 const AppCacheEntry kEntry(AppCacheEntry::EXPLICIT, 1); | 422 const AppCacheEntry kEntry(AppCacheEntry::EXPLICIT, 1); |
| 416 job->DeliverAppCachedResponse(kManifestUrl, kCacheId, kGroupId, | 423 job->DeliverAppCachedResponse(kManifestUrl, kCacheId, kGroupId, |
| 417 kEntry, false); | 424 kEntry, false); |
| 418 EXPECT_FALSE(job->is_waiting()); | 425 EXPECT_FALSE(job->is_waiting()); |
| 419 EXPECT_TRUE(job->is_delivering_appcache_response()); | 426 EXPECT_TRUE(job->is_delivering_appcache_response()); |
| 420 EXPECT_FALSE(job->has_been_started()); | 427 EXPECT_FALSE(job->has_been_started()); |
| 421 EXPECT_EQ(kManifestUrl, job->manifest_url()); | 428 EXPECT_EQ(kManifestUrl, job->manifest_url()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 436 base::Unretained(this))); | 443 base::Unretained(this))); |
| 437 | 444 |
| 438 AppCacheStorage* storage = service_->storage(); | 445 AppCacheStorage* storage = service_->storage(); |
| 439 request_.reset( | 446 request_.reset( |
| 440 new net::URLRequest(GURL("http://blah/"), | 447 new net::URLRequest(GURL("http://blah/"), |
| 441 url_request_delegate_.get(), | 448 url_request_delegate_.get(), |
| 442 &empty_context_)); | 449 &empty_context_)); |
| 443 | 450 |
| 444 // Setup to create an AppCacheURLRequestJob with orders to deliver | 451 // Setup to create an AppCacheURLRequestJob with orders to deliver |
| 445 // a network response. | 452 // a network response. |
| 446 mock_factory_job_ = new AppCacheURLRequestJob(request_.get(), storage); | 453 mock_factory_job_ = new AppCacheURLRequestJob( |
| 454 request_.get(), empty_context_.network_delegate(), storage); |
| 447 mock_factory_job_->DeliverNetworkResponse(); | 455 mock_factory_job_->DeliverNetworkResponse(); |
| 448 EXPECT_TRUE(mock_factory_job_->is_delivering_network_response()); | 456 EXPECT_TRUE(mock_factory_job_->is_delivering_network_response()); |
| 449 EXPECT_FALSE(mock_factory_job_->has_been_started()); | 457 EXPECT_FALSE(mock_factory_job_->has_been_started()); |
| 450 | 458 |
| 451 // Start the request. | 459 // Start the request. |
| 452 request_->Start(); | 460 request_->Start(); |
| 453 | 461 |
| 454 // The job should have been picked up. | 462 // The job should have been picked up. |
| 455 EXPECT_FALSE(mock_factory_job_); | 463 EXPECT_FALSE(mock_factory_job_); |
| 456 // Completion is async. | 464 // Completion is async. |
| (...skipping 14 matching lines...) Expand all Loading... |
| 471 base::Unretained(this))); | 479 base::Unretained(this))); |
| 472 | 480 |
| 473 AppCacheStorage* storage = service_->storage(); | 481 AppCacheStorage* storage = service_->storage(); |
| 474 request_.reset( | 482 request_.reset( |
| 475 new net::URLRequest(GURL("http://blah/"), | 483 new net::URLRequest(GURL("http://blah/"), |
| 476 url_request_delegate_.get(), | 484 url_request_delegate_.get(), |
| 477 &empty_context_)); | 485 &empty_context_)); |
| 478 | 486 |
| 479 // Setup to create an AppCacheURLRequestJob with orders to deliver | 487 // Setup to create an AppCacheURLRequestJob with orders to deliver |
| 480 // a network response. | 488 // a network response. |
| 481 mock_factory_job_ = new AppCacheURLRequestJob(request_.get(), storage); | 489 mock_factory_job_ = new AppCacheURLRequestJob( |
| 490 request_.get(), empty_context_.network_delegate(), storage); |
| 482 mock_factory_job_->DeliverErrorResponse(); | 491 mock_factory_job_->DeliverErrorResponse(); |
| 483 EXPECT_TRUE(mock_factory_job_->is_delivering_error_response()); | 492 EXPECT_TRUE(mock_factory_job_->is_delivering_error_response()); |
| 484 EXPECT_FALSE(mock_factory_job_->has_been_started()); | 493 EXPECT_FALSE(mock_factory_job_->has_been_started()); |
| 485 | 494 |
| 486 // Start the request. | 495 // Start the request. |
| 487 request_->Start(); | 496 request_->Start(); |
| 488 | 497 |
| 489 // The job should have been picked up. | 498 // The job should have been picked up. |
| 490 EXPECT_FALSE(mock_factory_job_); | 499 EXPECT_FALSE(mock_factory_job_); |
| 491 // Completion is async. | 500 // Completion is async. |
| (...skipping 29 matching lines...) Expand all Loading... |
| 521 | 530 |
| 522 void RequestAppCachedResource(bool start_after_delivery_orders) { | 531 void RequestAppCachedResource(bool start_after_delivery_orders) { |
| 523 AppCacheStorage* storage = service_->storage(); | 532 AppCacheStorage* storage = service_->storage(); |
| 524 request_.reset( | 533 request_.reset( |
| 525 new net::URLRequest(GURL("http://blah/"), | 534 new net::URLRequest(GURL("http://blah/"), |
| 526 url_request_delegate_.get(), | 535 url_request_delegate_.get(), |
| 527 &empty_context_)); | 536 &empty_context_)); |
| 528 | 537 |
| 529 // Setup to create an AppCacheURLRequestJob with orders to deliver | 538 // Setup to create an AppCacheURLRequestJob with orders to deliver |
| 530 // a network response. | 539 // a network response. |
| 531 scoped_refptr<AppCacheURLRequestJob> job( | 540 scoped_refptr<AppCacheURLRequestJob> job(new AppCacheURLRequestJob( |
| 532 new AppCacheURLRequestJob(request_.get(), storage)); | 541 request_.get(), empty_context_.network_delegate(), storage)); |
| 533 | 542 |
| 534 if (start_after_delivery_orders) { | 543 if (start_after_delivery_orders) { |
| 535 job->DeliverAppCachedResponse( | 544 job->DeliverAppCachedResponse( |
| 536 GURL(), 0, 111, | 545 GURL(), 0, 111, |
| 537 AppCacheEntry(AppCacheEntry::EXPLICIT, written_response_id_), | 546 AppCacheEntry(AppCacheEntry::EXPLICIT, written_response_id_), |
| 538 false); | 547 false); |
| 539 EXPECT_TRUE(job->is_delivering_appcache_response()); | 548 EXPECT_TRUE(job->is_delivering_appcache_response()); |
| 540 } | 549 } |
| 541 | 550 |
| 542 // Start the request. | 551 // Start the request. |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 639 new net::URLRequest(GURL("http://blah/"), | 648 new net::URLRequest(GURL("http://blah/"), |
| 640 url_request_delegate_.get(), | 649 url_request_delegate_.get(), |
| 641 &empty_context_)); | 650 &empty_context_)); |
| 642 | 651 |
| 643 // Request a range, the 3 middle chars out of 'Hello' | 652 // Request a range, the 3 middle chars out of 'Hello' |
| 644 net::HttpRequestHeaders extra_headers; | 653 net::HttpRequestHeaders extra_headers; |
| 645 extra_headers.SetHeader("Range", "bytes= 1-3"); | 654 extra_headers.SetHeader("Range", "bytes= 1-3"); |
| 646 request_->SetExtraRequestHeaders(extra_headers); | 655 request_->SetExtraRequestHeaders(extra_headers); |
| 647 | 656 |
| 648 // Create job with orders to deliver an appcached entry. | 657 // Create job with orders to deliver an appcached entry. |
| 649 scoped_refptr<AppCacheURLRequestJob> job( | 658 scoped_refptr<AppCacheURLRequestJob> job(new AppCacheURLRequestJob( |
| 650 new AppCacheURLRequestJob(request_.get(), storage)); | 659 request_.get(), empty_context_.network_delegate(), storage)); |
| 651 job->DeliverAppCachedResponse( | 660 job->DeliverAppCachedResponse( |
| 652 GURL(), 0, 111, | 661 GURL(), 0, 111, |
| 653 AppCacheEntry(AppCacheEntry::EXPLICIT, written_response_id_), | 662 AppCacheEntry(AppCacheEntry::EXPLICIT, written_response_id_), |
| 654 false); | 663 false); |
| 655 EXPECT_TRUE(job->is_delivering_appcache_response()); | 664 EXPECT_TRUE(job->is_delivering_appcache_response()); |
| 656 | 665 |
| 657 // Start the request. | 666 // Start the request. |
| 658 EXPECT_FALSE(job->has_been_started()); | 667 EXPECT_FALSE(job->has_been_started()); |
| 659 mock_factory_job_ = job; | 668 mock_factory_job_ = job; |
| 660 request_->Start(); | 669 request_->Start(); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 798 | 807 |
| 799 TEST_F(AppCacheURLRequestJobTest, CancelRequest) { | 808 TEST_F(AppCacheURLRequestJobTest, CancelRequest) { |
| 800 RunTestOnIOThread(&AppCacheURLRequestJobTest::CancelRequest); | 809 RunTestOnIOThread(&AppCacheURLRequestJobTest::CancelRequest); |
| 801 } | 810 } |
| 802 | 811 |
| 803 TEST_F(AppCacheURLRequestJobTest, CancelRequestWithIOPending) { | 812 TEST_F(AppCacheURLRequestJobTest, CancelRequestWithIOPending) { |
| 804 RunTestOnIOThread(&AppCacheURLRequestJobTest::CancelRequestWithIOPending); | 813 RunTestOnIOThread(&AppCacheURLRequestJobTest::CancelRequestWithIOPending); |
| 805 } | 814 } |
| 806 | 815 |
| 807 } // namespace appcache | 816 } // namespace appcache |
| OLD | NEW |