| 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/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 factory->CreateTransaction(&trans_); | 154 factory->CreateTransaction(&trans_); |
| 155 ++quit_counter_; | 155 ++quit_counter_; |
| 156 } | 156 } |
| 157 | 157 |
| 158 TestTransactionConsumer::~TestTransactionConsumer() { | 158 TestTransactionConsumer::~TestTransactionConsumer() { |
| 159 } | 159 } |
| 160 | 160 |
| 161 void TestTransactionConsumer::Start(const net::HttpRequestInfo* request, | 161 void TestTransactionConsumer::Start(const net::HttpRequestInfo* request, |
| 162 const net::BoundNetLog& net_log) { | 162 const net::BoundNetLog& net_log) { |
| 163 state_ = STARTING; | 163 state_ = STARTING; |
| 164 int result = trans_->Start(request, this, net_log); | 164 int result = trans_->Start( |
| 165 request, base::Bind(&net::OldCompletionCallbackAdapter, this), net_log); |
| 165 if (result != net::ERR_IO_PENDING) | 166 if (result != net::ERR_IO_PENDING) |
| 166 DidStart(result); | 167 DidStart(result); |
| 167 } | 168 } |
| 168 | 169 |
| 169 void TestTransactionConsumer::DidStart(int result) { | 170 void TestTransactionConsumer::DidStart(int result) { |
| 170 if (result != net::OK) { | 171 if (result != net::OK) { |
| 171 DidFinish(result); | 172 DidFinish(result); |
| 172 } else { | 173 } else { |
| 173 Read(); | 174 Read(); |
| 174 } | 175 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 186 void TestTransactionConsumer::DidFinish(int result) { | 187 void TestTransactionConsumer::DidFinish(int result) { |
| 187 state_ = DONE; | 188 state_ = DONE; |
| 188 error_ = result; | 189 error_ = result; |
| 189 if (--quit_counter_ == 0) | 190 if (--quit_counter_ == 0) |
| 190 MessageLoop::current()->Quit(); | 191 MessageLoop::current()->Quit(); |
| 191 } | 192 } |
| 192 | 193 |
| 193 void TestTransactionConsumer::Read() { | 194 void TestTransactionConsumer::Read() { |
| 194 state_ = READING; | 195 state_ = READING; |
| 195 read_buf_ = new net::IOBuffer(1024); | 196 read_buf_ = new net::IOBuffer(1024); |
| 196 int result = trans_->Read(read_buf_, 1024, this); | 197 int result = trans_->Read( |
| 198 read_buf_, 1024, base::Bind(&net::OldCompletionCallbackAdapter, this)); |
| 197 if (result != net::ERR_IO_PENDING) | 199 if (result != net::ERR_IO_PENDING) |
| 198 DidRead(result); | 200 DidRead(result); |
| 199 } | 201 } |
| 200 | 202 |
| 201 void TestTransactionConsumer::RunWithParams(const Tuple1<int>& params) { | 203 void TestTransactionConsumer::RunWithParams(const Tuple1<int>& params) { |
| 202 int result = params.a; | 204 int result = params.a; |
| 203 switch (state_) { | 205 switch (state_) { |
| 204 case STARTING: | 206 case STARTING: |
| 205 DidStart(result); | 207 DidStart(result); |
| 206 break; | 208 break; |
| 207 case READING: | 209 case READING: |
| 208 DidRead(result); | 210 DidRead(result); |
| 209 break; | 211 break; |
| 210 default: | 212 default: |
| 211 NOTREACHED(); | 213 NOTREACHED(); |
| 212 } | 214 } |
| 213 } | 215 } |
| 214 | 216 |
| 215 | 217 |
| 216 MockNetworkTransaction::MockNetworkTransaction(MockNetworkLayer* factory) | 218 MockNetworkTransaction::MockNetworkTransaction(MockNetworkLayer* factory) |
| 217 : ALLOW_THIS_IN_INITIALIZER_LIST(ptr_factory_(this)), | 219 : ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), |
| 218 data_cursor_(0), | 220 data_cursor_(0), |
| 219 transaction_factory_(factory->AsWeakPtr()) { | 221 transaction_factory_(factory->AsWeakPtr()) { |
| 220 } | 222 } |
| 221 | 223 |
| 222 MockNetworkTransaction::~MockNetworkTransaction() {} | 224 MockNetworkTransaction::~MockNetworkTransaction() {} |
| 223 | 225 |
| 224 int MockNetworkTransaction::Start(const net::HttpRequestInfo* request, | 226 int MockNetworkTransaction::Start(const net::HttpRequestInfo* request, |
| 225 net::OldCompletionCallback* callback, | 227 const net::CompletionCallback& callback, |
| 226 const net::BoundNetLog& net_log) { | 228 const net::BoundNetLog& net_log) { |
| 227 const MockTransaction* t = FindMockTransaction(request->url); | 229 const MockTransaction* t = FindMockTransaction(request->url); |
| 228 if (!t) | 230 if (!t) |
| 229 return net::ERR_FAILED; | 231 return net::ERR_FAILED; |
| 230 | 232 |
| 231 std::string resp_status = t->status; | 233 std::string resp_status = t->status; |
| 232 std::string resp_headers = t->response_headers; | 234 std::string resp_headers = t->response_headers; |
| 233 std::string resp_data = t->data; | 235 std::string resp_data = t->data; |
| 234 if (t->handler) | 236 if (t->handler) |
| 235 (t->handler)(request, &resp_status, &resp_headers, &resp_data); | 237 (t->handler)(request, &resp_status, &resp_headers, &resp_data); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 254 test_mode_ = t->test_mode; | 256 test_mode_ = t->test_mode; |
| 255 | 257 |
| 256 if (test_mode_ & TEST_MODE_SYNC_NET_START) | 258 if (test_mode_ & TEST_MODE_SYNC_NET_START) |
| 257 return net::OK; | 259 return net::OK; |
| 258 | 260 |
| 259 CallbackLater(callback, net::OK); | 261 CallbackLater(callback, net::OK); |
| 260 return net::ERR_IO_PENDING; | 262 return net::ERR_IO_PENDING; |
| 261 } | 263 } |
| 262 | 264 |
| 263 int MockNetworkTransaction::RestartIgnoringLastError( | 265 int MockNetworkTransaction::RestartIgnoringLastError( |
| 264 net::OldCompletionCallback* callback) { | 266 const net::CompletionCallback& callback) { |
| 265 return net::ERR_FAILED; | 267 return net::ERR_FAILED; |
| 266 } | 268 } |
| 267 | 269 |
| 268 int MockNetworkTransaction::RestartWithCertificate( | 270 int MockNetworkTransaction::RestartWithCertificate( |
| 269 net::X509Certificate* client_cert, | 271 net::X509Certificate* client_cert, |
| 270 net::OldCompletionCallback* callback) { | 272 const net::CompletionCallback& callback) { |
| 271 return net::ERR_FAILED; | 273 return net::ERR_FAILED; |
| 272 } | 274 } |
| 273 | 275 |
| 274 int MockNetworkTransaction::RestartWithAuth( | 276 int MockNetworkTransaction::RestartWithAuth( |
| 275 const net::AuthCredentials& credentials, | 277 const net::AuthCredentials& credentials, |
| 276 net::OldCompletionCallback* callback) { | 278 const net::CompletionCallback& callback) { |
| 277 return net::ERR_FAILED; | 279 return net::ERR_FAILED; |
| 278 } | 280 } |
| 279 | 281 |
| 280 bool MockNetworkTransaction::IsReadyToRestartForAuth() { | 282 bool MockNetworkTransaction::IsReadyToRestartForAuth() { |
| 281 return false; | 283 return false; |
| 282 } | 284 } |
| 283 | 285 |
| 284 int MockNetworkTransaction::Read(net::IOBuffer* buf, int buf_len, | 286 int MockNetworkTransaction::Read(net::IOBuffer* buf, int buf_len, |
| 285 net::OldCompletionCallback* callback) { | 287 const net::CompletionCallback& callback) { |
| 286 int data_len = static_cast<int>(data_.size()); | 288 int data_len = static_cast<int>(data_.size()); |
| 287 int num = std::min(buf_len, data_len - data_cursor_); | 289 int num = std::min(buf_len, data_len - data_cursor_); |
| 288 if (num) { | 290 if (num) { |
| 289 memcpy(buf->data(), data_.data() + data_cursor_, num); | 291 memcpy(buf->data(), data_.data() + data_cursor_, num); |
| 290 data_cursor_ += num; | 292 data_cursor_ += num; |
| 291 } | 293 } |
| 292 if (test_mode_ & TEST_MODE_SYNC_NET_READ) | 294 if (test_mode_ & TEST_MODE_SYNC_NET_READ) |
| 293 return num; | 295 return num; |
| 294 | 296 |
| 295 CallbackLater(callback, num); | 297 CallbackLater(callback, num); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 310 net::LoadState MockNetworkTransaction::GetLoadState() const { | 312 net::LoadState MockNetworkTransaction::GetLoadState() const { |
| 311 if (data_cursor_) | 313 if (data_cursor_) |
| 312 return net::LOAD_STATE_READING_RESPONSE; | 314 return net::LOAD_STATE_READING_RESPONSE; |
| 313 return net::LOAD_STATE_IDLE; | 315 return net::LOAD_STATE_IDLE; |
| 314 } | 316 } |
| 315 | 317 |
| 316 uint64 MockNetworkTransaction::GetUploadProgress() const { | 318 uint64 MockNetworkTransaction::GetUploadProgress() const { |
| 317 return 0; | 319 return 0; |
| 318 } | 320 } |
| 319 | 321 |
| 320 void MockNetworkTransaction::CallbackLater(net::OldCompletionCallback* callback, | 322 void MockNetworkTransaction::CallbackLater( |
| 321 int result) { | 323 const net::CompletionCallback& callback, int result) { |
| 322 MessageLoop::current()->PostTask(FROM_HERE, base::Bind( | 324 MessageLoop::current()->PostTask( |
| 323 &MockNetworkTransaction::RunCallback, ptr_factory_.GetWeakPtr(), | 325 FROM_HERE, base::Bind(&MockNetworkTransaction::RunCallback, |
| 324 callback, result)); | 326 weak_factory_.GetWeakPtr(), callback, result)); |
| 325 } | 327 } |
| 326 | 328 |
| 327 void MockNetworkTransaction::RunCallback(net::OldCompletionCallback* callback, | 329 void MockNetworkTransaction::RunCallback( |
| 328 int result) { | 330 const net::CompletionCallback& callback, int result) { |
| 329 callback->Run(result); | 331 callback.Run(result); |
| 330 } | 332 } |
| 331 | 333 |
| 332 MockNetworkLayer::MockNetworkLayer() | 334 MockNetworkLayer::MockNetworkLayer() |
| 333 : transaction_count_(0), done_reading_called_(false) {} | 335 : transaction_count_(0), done_reading_called_(false) {} |
| 334 | 336 |
| 335 MockNetworkLayer::~MockNetworkLayer() {} | 337 MockNetworkLayer::~MockNetworkLayer() {} |
| 336 | 338 |
| 337 void MockNetworkLayer::TransactionDoneReading() { | 339 void MockNetworkLayer::TransactionDoneReading() { |
| 338 done_reading_called_ = true; | 340 done_reading_called_ = true; |
| 339 } | 341 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 352 net::HttpNetworkSession* MockNetworkLayer::GetSession() { | 354 net::HttpNetworkSession* MockNetworkLayer::GetSession() { |
| 353 return NULL; | 355 return NULL; |
| 354 } | 356 } |
| 355 | 357 |
| 356 //----------------------------------------------------------------------------- | 358 //----------------------------------------------------------------------------- |
| 357 // helpers | 359 // helpers |
| 358 | 360 |
| 359 int ReadTransaction(net::HttpTransaction* trans, std::string* result) { | 361 int ReadTransaction(net::HttpTransaction* trans, std::string* result) { |
| 360 int rv; | 362 int rv; |
| 361 | 363 |
| 362 TestOldCompletionCallback callback; | 364 net::TestCompletionCallback callback; |
| 363 | 365 |
| 364 std::string content; | 366 std::string content; |
| 365 do { | 367 do { |
| 366 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); | 368 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(256)); |
| 367 rv = trans->Read(buf, 256, &callback); | 369 rv = trans->Read(buf, 256, callback.callback()); |
| 368 if (rv == net::ERR_IO_PENDING) | 370 if (rv == net::ERR_IO_PENDING) |
| 369 rv = callback.WaitForResult(); | 371 rv = callback.WaitForResult(); |
| 370 if (rv > 0) { | 372 |
| 373 if (rv > 0) |
| 371 content.append(buf->data(), rv); | 374 content.append(buf->data(), rv); |
| 372 } else if (rv < 0) { | 375 else if (rv < 0) |
| 373 return rv; | 376 return rv; |
| 374 } | |
| 375 } while (rv > 0); | 377 } while (rv > 0); |
| 376 | 378 |
| 377 result->swap(content); | 379 result->swap(content); |
| 378 return net::OK; | 380 return net::OK; |
| 379 } | 381 } |
| OLD | NEW |