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 "net/http/http_transaction_unittest.h" | 5 #include "net/http/http_transaction_unittest.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 break; | 205 break; |
206 case READING: | 206 case READING: |
207 DidRead(result); | 207 DidRead(result); |
208 break; | 208 break; |
209 default: | 209 default: |
210 NOTREACHED(); | 210 NOTREACHED(); |
211 } | 211 } |
212 } | 212 } |
213 | 213 |
214 | 214 |
215 MockNetworkTransaction::MockNetworkTransaction() : | 215 MockNetworkTransaction::MockNetworkTransaction(MockNetworkLayer* factory) |
216 ALLOW_THIS_IN_INITIALIZER_LIST(task_factory_(this)), data_cursor_(0) { | 216 : ALLOW_THIS_IN_INITIALIZER_LIST(task_factory_(this)), |
| 217 data_cursor_(0), |
| 218 transaction_factory_(factory->AsWeakPtr()) { |
217 } | 219 } |
218 | 220 |
219 MockNetworkTransaction::~MockNetworkTransaction() {} | 221 MockNetworkTransaction::~MockNetworkTransaction() {} |
220 | 222 |
221 int MockNetworkTransaction::Start(const net::HttpRequestInfo* request, | 223 int MockNetworkTransaction::Start(const net::HttpRequestInfo* request, |
222 net::CompletionCallback* callback, | 224 net::CompletionCallback* callback, |
223 const net::BoundNetLog& net_log) { | 225 const net::BoundNetLog& net_log) { |
224 const MockTransaction* t = FindMockTransaction(request->url); | 226 const MockTransaction* t = FindMockTransaction(request->url); |
225 if (!t) | 227 if (!t) |
226 return net::ERR_FAILED; | 228 return net::ERR_FAILED; |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
288 } | 290 } |
289 if (test_mode_ & TEST_MODE_SYNC_NET_READ) | 291 if (test_mode_ & TEST_MODE_SYNC_NET_READ) |
290 return num; | 292 return num; |
291 | 293 |
292 CallbackLater(callback, num); | 294 CallbackLater(callback, num); |
293 return net::ERR_IO_PENDING; | 295 return net::ERR_IO_PENDING; |
294 } | 296 } |
295 | 297 |
296 void MockNetworkTransaction::StopCaching() {} | 298 void MockNetworkTransaction::StopCaching() {} |
297 | 299 |
| 300 void MockNetworkTransaction::DoneReading() { |
| 301 if (transaction_factory_) |
| 302 transaction_factory_->TransactionDoneReading(); |
| 303 } |
| 304 |
298 const net::HttpResponseInfo* MockNetworkTransaction::GetResponseInfo() const { | 305 const net::HttpResponseInfo* MockNetworkTransaction::GetResponseInfo() const { |
299 return &response_; | 306 return &response_; |
300 } | 307 } |
301 | 308 |
302 net::LoadState MockNetworkTransaction::GetLoadState() const { | 309 net::LoadState MockNetworkTransaction::GetLoadState() const { |
303 if (data_cursor_) | 310 if (data_cursor_) |
304 return net::LOAD_STATE_READING_RESPONSE; | 311 return net::LOAD_STATE_READING_RESPONSE; |
305 return net::LOAD_STATE_IDLE; | 312 return net::LOAD_STATE_IDLE; |
306 } | 313 } |
307 | 314 |
308 uint64 MockNetworkTransaction::GetUploadProgress() const { | 315 uint64 MockNetworkTransaction::GetUploadProgress() const { |
309 return 0; | 316 return 0; |
310 } | 317 } |
311 | 318 |
312 void MockNetworkTransaction::CallbackLater(net::CompletionCallback* callback, | 319 void MockNetworkTransaction::CallbackLater(net::CompletionCallback* callback, |
313 int result) { | 320 int result) { |
314 MessageLoop::current()->PostTask(FROM_HERE, task_factory_.NewRunnableMethod( | 321 MessageLoop::current()->PostTask(FROM_HERE, task_factory_.NewRunnableMethod( |
315 &MockNetworkTransaction::RunCallback, callback, result)); | 322 &MockNetworkTransaction::RunCallback, callback, result)); |
316 } | 323 } |
317 | 324 |
318 void MockNetworkTransaction::RunCallback(net::CompletionCallback* callback, | 325 void MockNetworkTransaction::RunCallback(net::CompletionCallback* callback, |
319 int result) { | 326 int result) { |
320 callback->Run(result); | 327 callback->Run(result); |
321 } | 328 } |
322 | 329 |
323 MockNetworkLayer::MockNetworkLayer() : transaction_count_(0) {} | 330 MockNetworkLayer::MockNetworkLayer() |
| 331 : transaction_count_(0), done_reading_called_(false) {} |
324 | 332 |
325 MockNetworkLayer::~MockNetworkLayer() {} | 333 MockNetworkLayer::~MockNetworkLayer() {} |
326 | 334 |
| 335 void MockNetworkLayer::TransactionDoneReading() { |
| 336 done_reading_called_ = true; |
| 337 } |
| 338 |
327 int MockNetworkLayer::CreateTransaction( | 339 int MockNetworkLayer::CreateTransaction( |
328 scoped_ptr<net::HttpTransaction>* trans) { | 340 scoped_ptr<net::HttpTransaction>* trans) { |
329 transaction_count_++; | 341 transaction_count_++; |
330 trans->reset(new MockNetworkTransaction()); | 342 trans->reset(new MockNetworkTransaction(this)); |
331 return net::OK; | 343 return net::OK; |
332 } | 344 } |
333 | 345 |
334 net::HttpCache* MockNetworkLayer::GetCache() { | 346 net::HttpCache* MockNetworkLayer::GetCache() { |
335 return NULL; | 347 return NULL; |
336 } | 348 } |
337 | 349 |
338 net::HttpNetworkSession* MockNetworkLayer::GetSession() { | 350 net::HttpNetworkSession* MockNetworkLayer::GetSession() { |
339 return NULL; | 351 return NULL; |
340 } | 352 } |
(...skipping 15 matching lines...) Expand all Loading... |
356 if (rv > 0) { | 368 if (rv > 0) { |
357 content.append(buf->data(), rv); | 369 content.append(buf->data(), rv); |
358 } else if (rv < 0) { | 370 } else if (rv < 0) { |
359 return rv; | 371 return rv; |
360 } | 372 } |
361 } while (rv > 0); | 373 } while (rv > 0); |
362 | 374 |
363 result->swap(content); | 375 result->swap(content); |
364 return net::OK; | 376 return net::OK; |
365 } | 377 } |
OLD | NEW |