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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 } else { | 103 } else { |
104 RequestComplete(); | 104 RequestComplete(); |
105 } | 105 } |
106 } | 106 } |
107 | 107 |
108 void ReadSome(net::URLRequest* request) { | 108 void ReadSome(net::URLRequest* request) { |
109 DCHECK(amount_received_ + kBlockSize <= kNumBlocks * kBlockSize); | 109 DCHECK(amount_received_ + kBlockSize <= kNumBlocks * kBlockSize); |
110 scoped_refptr<IOBuffer> wrapped_buffer( | 110 scoped_refptr<IOBuffer> wrapped_buffer( |
111 new net::WrappedIOBuffer(received_data_->data() + amount_received_)); | 111 new net::WrappedIOBuffer(received_data_->data() + amount_received_)); |
112 int bytes_read = 0; | 112 int bytes_read = 0; |
113 EXPECT_FALSE(request->Read(wrapped_buffer, kBlockSize, &bytes_read)); | 113 EXPECT_FALSE( |
| 114 request->Read(wrapped_buffer.get(), kBlockSize, &bytes_read)); |
114 EXPECT_EQ(0, bytes_read); | 115 EXPECT_EQ(0, bytes_read); |
115 } | 116 } |
116 | 117 |
117 void RequestComplete() { | 118 void RequestComplete() { |
118 test_->ScheduleNextTask(); | 119 test_->ScheduleNextTask(); |
119 } | 120 } |
120 | 121 |
121 AppCacheURLRequestJobTest* test_; | 122 AppCacheURLRequestJobTest* test_; |
122 net::HttpResponseInfo received_info_; | 123 net::HttpResponseInfo received_info_; |
123 scoped_refptr<net::IOBuffer> received_data_; | 124 scoped_refptr<net::IOBuffer> received_data_; |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 task.Run(); | 244 task.Run(); |
244 else | 245 else |
245 MessageLoop::current()->PostTask(FROM_HERE, task); | 246 MessageLoop::current()->PostTask(FROM_HERE, task); |
246 } | 247 } |
247 | 248 |
248 // Wrappers to call AppCacheResponseReader/Writer Read and Write methods | 249 // Wrappers to call AppCacheResponseReader/Writer Read and Write methods |
249 | 250 |
250 void WriteBasicResponse() { | 251 void WriteBasicResponse() { |
251 scoped_refptr<IOBuffer> body(new WrappedIOBuffer(kHttpBasicBody)); | 252 scoped_refptr<IOBuffer> body(new WrappedIOBuffer(kHttpBasicBody)); |
252 std::string raw_headers(kHttpBasicHeaders, arraysize(kHttpBasicHeaders)); | 253 std::string raw_headers(kHttpBasicHeaders, arraysize(kHttpBasicHeaders)); |
253 WriteResponse(MakeHttpResponseInfo(raw_headers), body, | 254 WriteResponse(MakeHttpResponseInfo(raw_headers), body.get(), |
254 strlen(kHttpBasicBody)); | 255 strlen(kHttpBasicBody)); |
255 } | 256 } |
256 | 257 |
257 void WriteResponse(net::HttpResponseInfo* head, | 258 void WriteResponse(net::HttpResponseInfo* head, |
258 IOBuffer* body, int body_len) { | 259 IOBuffer* body, int body_len) { |
259 DCHECK(body); | 260 DCHECK(body); |
260 scoped_refptr<IOBuffer> body_ref(body); | 261 scoped_refptr<IOBuffer> body_ref(body); |
261 PushNextTask(base::Bind(&AppCacheURLRequestJobTest::WriteResponseBody, | 262 PushNextTask(base::Bind(&AppCacheURLRequestJobTest::WriteResponseBody, |
262 base::Unretained(this), body_ref, body_len)); | 263 base::Unretained(this), body_ref, body_len)); |
263 WriteResponseHead(head); | 264 WriteResponseHead(head); |
264 } | 265 } |
265 | 266 |
266 void WriteResponseHead(net::HttpResponseInfo* head) { | 267 void WriteResponseHead(net::HttpResponseInfo* head) { |
267 EXPECT_FALSE(writer_->IsWritePending()); | 268 EXPECT_FALSE(writer_->IsWritePending()); |
268 expected_write_result_ = GetHttpResponseInfoSize(head); | 269 expected_write_result_ = GetHttpResponseInfoSize(head); |
269 write_info_buffer_ = new HttpResponseInfoIOBuffer(head); | 270 write_info_buffer_ = new HttpResponseInfoIOBuffer(head); |
270 writer_->WriteInfo( | 271 writer_->WriteInfo( |
271 write_info_buffer_, | 272 write_info_buffer_.get(), |
272 base::Bind(&AppCacheURLRequestJobTest::OnWriteInfoComplete, | 273 base::Bind(&AppCacheURLRequestJobTest::OnWriteInfoComplete, |
273 base::Unretained(this))); | 274 base::Unretained(this))); |
274 } | 275 } |
275 | 276 |
276 void WriteResponseBody(scoped_refptr<IOBuffer> io_buffer, int buf_len) { | 277 void WriteResponseBody(scoped_refptr<IOBuffer> io_buffer, int buf_len) { |
277 EXPECT_FALSE(writer_->IsWritePending()); | 278 EXPECT_FALSE(writer_->IsWritePending()); |
278 write_buffer_ = io_buffer; | 279 write_buffer_ = io_buffer; |
279 expected_write_result_ = buf_len; | 280 expected_write_result_ = buf_len; |
280 writer_->WriteData( | 281 writer_->WriteData( |
281 write_buffer_, buf_len, | 282 write_buffer_.get(), buf_len, |
282 base::Bind(&AppCacheURLRequestJobTest::OnWriteComplete, | 283 base::Bind(&AppCacheURLRequestJobTest::OnWriteComplete, |
283 base::Unretained(this))); | 284 base::Unretained(this))); |
284 } | 285 } |
285 | 286 |
286 void ReadResponseBody(scoped_refptr<IOBuffer> io_buffer, int buf_len) { | 287 void ReadResponseBody(scoped_refptr<IOBuffer> io_buffer, int buf_len) { |
287 EXPECT_FALSE(reader_->IsReadPending()); | 288 EXPECT_FALSE(reader_->IsReadPending()); |
288 read_buffer_ = io_buffer; | 289 read_buffer_ = io_buffer; |
289 expected_read_result_ = buf_len; | 290 expected_read_result_ = buf_len; |
290 reader_->ReadData( | 291 reader_->ReadData( |
291 read_buffer_, buf_len, | 292 read_buffer_.get(), buf_len, |
292 base::Bind(&AppCacheURLRequestJobTest::OnReadComplete, | 293 base::Bind(&AppCacheURLRequestJobTest::OnReadComplete, |
293 base::Unretained(this))); | 294 base::Unretained(this))); |
294 } | 295 } |
295 | 296 |
296 // AppCacheResponseReader / Writer completion callbacks | 297 // AppCacheResponseReader / Writer completion callbacks |
297 | 298 |
298 void OnWriteInfoComplete(int result) { | 299 void OnWriteInfoComplete(int result) { |
299 EXPECT_FALSE(writer_->IsWritePending()); | 300 EXPECT_FALSE(writer_->IsWritePending()); |
300 EXPECT_EQ(expected_write_result_, result); | 301 EXPECT_EQ(expected_write_result_, result); |
301 ScheduleNextTask(); | 302 ScheduleNextTask(); |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 if (start_after_delivery_orders) { | 538 if (start_after_delivery_orders) { |
538 job->DeliverAppCachedResponse( | 539 job->DeliverAppCachedResponse( |
539 GURL(), 0, 111, | 540 GURL(), 0, 111, |
540 AppCacheEntry(AppCacheEntry::EXPLICIT, written_response_id_), | 541 AppCacheEntry(AppCacheEntry::EXPLICIT, written_response_id_), |
541 false); | 542 false); |
542 EXPECT_TRUE(job->is_delivering_appcache_response()); | 543 EXPECT_TRUE(job->is_delivering_appcache_response()); |
543 } | 544 } |
544 | 545 |
545 // Start the request. | 546 // Start the request. |
546 EXPECT_FALSE(job->has_been_started()); | 547 EXPECT_FALSE(job->has_been_started()); |
547 mock_factory_job_ = job; | 548 mock_factory_job_ = job.get(); |
548 request_->Start(); | 549 request_->Start(); |
549 EXPECT_FALSE(mock_factory_job_); | 550 EXPECT_FALSE(mock_factory_job_); |
550 EXPECT_TRUE(job->has_been_started()); | 551 EXPECT_TRUE(job->has_been_started()); |
551 | 552 |
552 if (!start_after_delivery_orders) { | 553 if (!start_after_delivery_orders) { |
553 job->DeliverAppCachedResponse( | 554 job->DeliverAppCachedResponse( |
554 GURL(), 0, 111, | 555 GURL(), 0, 111, |
555 AppCacheEntry(AppCacheEntry::EXPLICIT, written_response_id_), | 556 AppCacheEntry(AppCacheEntry::EXPLICIT, written_response_id_), |
556 false); | 557 false); |
557 EXPECT_TRUE(job->is_delivering_appcache_response()); | 558 EXPECT_TRUE(job->is_delivering_appcache_response()); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
596 | 597 |
597 void WriteLargeResponse() { | 598 void WriteLargeResponse() { |
598 // 3, 1k blocks | 599 // 3, 1k blocks |
599 static const char kHttpHeaders[] = | 600 static const char kHttpHeaders[] = |
600 "HTTP/1.0 200 OK\0Content-Length: 3072\0\0"; | 601 "HTTP/1.0 200 OK\0Content-Length: 3072\0\0"; |
601 scoped_refptr<IOBuffer> body(new IOBuffer(kBlockSize * 3)); | 602 scoped_refptr<IOBuffer> body(new IOBuffer(kBlockSize * 3)); |
602 char* p = body->data(); | 603 char* p = body->data(); |
603 for (int i = 0; i < 3; ++i, p += kBlockSize) | 604 for (int i = 0; i < 3; ++i, p += kBlockSize) |
604 FillData(i + 1, p, kBlockSize); | 605 FillData(i + 1, p, kBlockSize); |
605 std::string raw_headers(kHttpHeaders, arraysize(kHttpHeaders)); | 606 std::string raw_headers(kHttpHeaders, arraysize(kHttpHeaders)); |
606 WriteResponse(MakeHttpResponseInfo(raw_headers), body, kBlockSize * 3); | 607 WriteResponse( |
| 608 MakeHttpResponseInfo(raw_headers), body.get(), kBlockSize * 3); |
607 } | 609 } |
608 | 610 |
609 void VerifyDeliverLargeAppCachedResponse() { | 611 void VerifyDeliverLargeAppCachedResponse() { |
610 EXPECT_TRUE(request_->status().is_success()); | 612 EXPECT_TRUE(request_->status().is_success()); |
611 EXPECT_TRUE(CompareHttpResponseInfos( | 613 EXPECT_TRUE(CompareHttpResponseInfos( |
612 write_info_buffer_->http_info.get(), | 614 write_info_buffer_->http_info.get(), |
613 &url_request_delegate_->received_info_)); | 615 &url_request_delegate_->received_info_)); |
614 EXPECT_EQ(3072, url_request_delegate_->amount_received_); | 616 EXPECT_EQ(3072, url_request_delegate_->amount_received_); |
615 char* p = url_request_delegate_->received_data_->data(); | 617 char* p = url_request_delegate_->received_data_->data(); |
616 for (int i = 0; i < 3; ++i, p += kBlockSize) | 618 for (int i = 0; i < 3; ++i, p += kBlockSize) |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 scoped_refptr<AppCacheURLRequestJob> job(new AppCacheURLRequestJob( | 652 scoped_refptr<AppCacheURLRequestJob> job(new AppCacheURLRequestJob( |
651 request_.get(), empty_context_.network_delegate(), storage)); | 653 request_.get(), empty_context_.network_delegate(), storage)); |
652 job->DeliverAppCachedResponse( | 654 job->DeliverAppCachedResponse( |
653 GURL(), 0, 111, | 655 GURL(), 0, 111, |
654 AppCacheEntry(AppCacheEntry::EXPLICIT, written_response_id_), | 656 AppCacheEntry(AppCacheEntry::EXPLICIT, written_response_id_), |
655 false); | 657 false); |
656 EXPECT_TRUE(job->is_delivering_appcache_response()); | 658 EXPECT_TRUE(job->is_delivering_appcache_response()); |
657 | 659 |
658 // Start the request. | 660 // Start the request. |
659 EXPECT_FALSE(job->has_been_started()); | 661 EXPECT_FALSE(job->has_been_started()); |
660 mock_factory_job_ = job; | 662 mock_factory_job_ = job.get(); |
661 request_->Start(); | 663 request_->Start(); |
662 EXPECT_FALSE(mock_factory_job_); | 664 EXPECT_FALSE(mock_factory_job_); |
663 EXPECT_TRUE(job->has_been_started()); | 665 EXPECT_TRUE(job->has_been_started()); |
664 // Completion is async. | 666 // Completion is async. |
665 } | 667 } |
666 | 668 |
667 void VerifyDeliverPartialResponse() { | 669 void VerifyDeliverPartialResponse() { |
668 EXPECT_TRUE(request_->status().is_success()); | 670 EXPECT_TRUE(request_->status().is_success()); |
669 EXPECT_EQ(3, url_request_delegate_->amount_received_); | 671 EXPECT_EQ(3, url_request_delegate_->amount_received_); |
670 EXPECT_EQ(0, memcmp(kHttpBasicBody + 1, | 672 EXPECT_EQ(0, memcmp(kHttpBasicBody + 1, |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
799 | 801 |
800 TEST_F(AppCacheURLRequestJobTest, CancelRequest) { | 802 TEST_F(AppCacheURLRequestJobTest, CancelRequest) { |
801 RunTestOnIOThread(&AppCacheURLRequestJobTest::CancelRequest); | 803 RunTestOnIOThread(&AppCacheURLRequestJobTest::CancelRequest); |
802 } | 804 } |
803 | 805 |
804 TEST_F(AppCacheURLRequestJobTest, CancelRequestWithIOPending) { | 806 TEST_F(AppCacheURLRequestJobTest, CancelRequestWithIOPending) { |
805 RunTestOnIOThread(&AppCacheURLRequestJobTest::CancelRequestWithIOPending); | 807 RunTestOnIOThread(&AppCacheURLRequestJobTest::CancelRequestWithIOPending); |
806 } | 808 } |
807 | 809 |
808 } // namespace appcache | 810 } // namespace appcache |
OLD | NEW |