| 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/socket_stream/socket_stream.h" | 5 #include "net/socket_stream/socket_stream.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 MockHostResolver host_resolver; | 281 MockHostResolver host_resolver; |
| 282 | 282 |
| 283 scoped_refptr<SocketStream> socket_stream( | 283 scoped_refptr<SocketStream> socket_stream( |
| 284 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); | 284 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); |
| 285 | 285 |
| 286 socket_stream->set_context(new TestURLRequestContext()); | 286 socket_stream->set_context(new TestURLRequestContext()); |
| 287 socket_stream->SetHostResolver(&host_resolver); | 287 socket_stream->SetHostResolver(&host_resolver); |
| 288 | 288 |
| 289 MockWrite data_writes[] = { | 289 MockWrite data_writes[] = { |
| 290 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest), | 290 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest), |
| 291 MockWrite(true, "\0message1\xff", 10), | 291 MockWrite(ASYNC, "\0message1\xff", 10), |
| 292 MockWrite(true, "\0message2\xff", 10) | 292 MockWrite(ASYNC, "\0message2\xff", 10) |
| 293 }; | 293 }; |
| 294 MockRead data_reads[] = { | 294 MockRead data_reads[] = { |
| 295 MockRead(SocketStreamTest::kWebSocketHandshakeResponse), | 295 MockRead(SocketStreamTest::kWebSocketHandshakeResponse), |
| 296 // Server doesn't close the connection after handshake. | 296 // Server doesn't close the connection after handshake. |
| 297 MockRead(true, ERR_IO_PENDING) | 297 MockRead(ASYNC, ERR_IO_PENDING) |
| 298 }; | 298 }; |
| 299 AddWebSocketMessage("message1"); | 299 AddWebSocketMessage("message1"); |
| 300 AddWebSocketMessage("message2"); | 300 AddWebSocketMessage("message2"); |
| 301 | 301 |
| 302 scoped_ptr<DelayedSocketData> data_provider( | 302 scoped_ptr<DelayedSocketData> data_provider( |
| 303 new DelayedSocketData(1, | 303 new DelayedSocketData(1, |
| 304 data_reads, arraysize(data_reads), | 304 data_reads, arraysize(data_reads), |
| 305 data_writes, arraysize(data_writes))); | 305 data_writes, arraysize(data_writes))); |
| 306 | 306 |
| 307 MockClientSocketFactory* mock_socket_factory = | 307 MockClientSocketFactory* mock_socket_factory = |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 "Proxy-Connection: keep-alive\r\n" | 351 "Proxy-Connection: keep-alive\r\n" |
| 352 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 352 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 353 }; | 353 }; |
| 354 MockRead data_reads2[] = { | 354 MockRead data_reads2[] = { |
| 355 MockRead("HTTP/1.1 200 Connection Established\r\n"), | 355 MockRead("HTTP/1.1 200 Connection Established\r\n"), |
| 356 MockRead("Proxy-agent: Apache/2.2.8\r\n"), | 356 MockRead("Proxy-agent: Apache/2.2.8\r\n"), |
| 357 MockRead("\r\n"), | 357 MockRead("\r\n"), |
| 358 // SocketStream::DoClose is run asynchronously. Socket can be read after | 358 // SocketStream::DoClose is run asynchronously. Socket can be read after |
| 359 // "\r\n". We have to give ERR_IO_PENDING to SocketStream then to indicate | 359 // "\r\n". We have to give ERR_IO_PENDING to SocketStream then to indicate |
| 360 // server doesn't close the connection. | 360 // server doesn't close the connection. |
| 361 MockRead(true, ERR_IO_PENDING) | 361 MockRead(ASYNC, ERR_IO_PENDING) |
| 362 }; | 362 }; |
| 363 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 363 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 364 data_writes2, arraysize(data_writes2)); | 364 data_writes2, arraysize(data_writes2)); |
| 365 mock_socket_factory.AddSocketDataProvider(&data2); | 365 mock_socket_factory.AddSocketDataProvider(&data2); |
| 366 | 366 |
| 367 TestCompletionCallback test_callback; | 367 TestCompletionCallback test_callback; |
| 368 | 368 |
| 369 scoped_ptr<SocketStreamEventRecorder> delegate( | 369 scoped_ptr<SocketStreamEventRecorder> delegate( |
| 370 new SocketStreamEventRecorder(test_callback.callback())); | 370 new SocketStreamEventRecorder(test_callback.callback())); |
| 371 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, | 371 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 MockHostResolver host_resolver; | 418 MockHostResolver host_resolver; |
| 419 | 419 |
| 420 scoped_refptr<SocketStream> socket_stream( | 420 scoped_refptr<SocketStream> socket_stream( |
| 421 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); | 421 new SocketStream(GURL("ws://example.com/demo"), delegate.get())); |
| 422 | 422 |
| 423 socket_stream->set_context(new TestURLRequestContext()); | 423 socket_stream->set_context(new TestURLRequestContext()); |
| 424 socket_stream->SetHostResolver(&host_resolver); | 424 socket_stream->SetHostResolver(&host_resolver); |
| 425 | 425 |
| 426 MockWrite data_writes[] = { | 426 MockWrite data_writes[] = { |
| 427 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest), | 427 MockWrite(SocketStreamTest::kWebSocketHandshakeRequest), |
| 428 MockWrite(true, "\0message1\xff", 10), | 428 MockWrite(ASYNC, "\0message1\xff", 10), |
| 429 MockWrite(true, "\0message2\xff", 10) | 429 MockWrite(ASYNC, "\0message2\xff", 10) |
| 430 }; | 430 }; |
| 431 MockRead data_reads[] = { | 431 MockRead data_reads[] = { |
| 432 MockRead(SocketStreamTest::kWebSocketHandshakeResponse), | 432 MockRead(SocketStreamTest::kWebSocketHandshakeResponse), |
| 433 // Server doesn't close the connection after handshake. | 433 // Server doesn't close the connection after handshake. |
| 434 MockRead(true, ERR_IO_PENDING) | 434 MockRead(ASYNC, ERR_IO_PENDING) |
| 435 }; | 435 }; |
| 436 AddWebSocketMessage("message1"); | 436 AddWebSocketMessage("message1"); |
| 437 AddWebSocketMessage("message2"); | 437 AddWebSocketMessage("message2"); |
| 438 | 438 |
| 439 scoped_ptr<DelayedSocketData> data_provider( | 439 scoped_ptr<DelayedSocketData> data_provider( |
| 440 new DelayedSocketData(1, | 440 new DelayedSocketData(1, |
| 441 data_reads, arraysize(data_reads), | 441 data_reads, arraysize(data_reads), |
| 442 data_writes, arraysize(data_writes))); | 442 data_writes, arraysize(data_writes))); |
| 443 | 443 |
| 444 MockClientSocketFactory* mock_socket_factory = | 444 MockClientSocketFactory* mock_socket_factory = |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 540 "Host: example.com\r\n" | 540 "Host: example.com\r\n" |
| 541 "Proxy-Connection: keep-alive\r\n\r\n") | 541 "Proxy-Connection: keep-alive\r\n\r\n") |
| 542 }; | 542 }; |
| 543 MockRead data_reads[] = { | 543 MockRead data_reads[] = { |
| 544 MockRead("HTTP/1.1 200 Connection Established\r\n"), | 544 MockRead("HTTP/1.1 200 Connection Established\r\n"), |
| 545 MockRead("Proxy-agent: Apache/2.2.8\r\n"), | 545 MockRead("Proxy-agent: Apache/2.2.8\r\n"), |
| 546 MockRead("\r\n"), | 546 MockRead("\r\n"), |
| 547 // SocketStream::DoClose is run asynchronously. Socket can be read after | 547 // SocketStream::DoClose is run asynchronously. Socket can be read after |
| 548 // "\r\n". We have to give ERR_IO_PENDING to SocketStream then to indicate | 548 // "\r\n". We have to give ERR_IO_PENDING to SocketStream then to indicate |
| 549 // server doesn't close the connection. | 549 // server doesn't close the connection. |
| 550 MockRead(true, ERR_IO_PENDING) | 550 MockRead(ASYNC, ERR_IO_PENDING) |
| 551 }; | 551 }; |
| 552 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 552 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 553 data_writes, arraysize(data_writes)); | 553 data_writes, arraysize(data_writes)); |
| 554 mock_socket_factory.AddSocketDataProvider(&data); | 554 mock_socket_factory.AddSocketDataProvider(&data); |
| 555 SSLSocketDataProvider ssl(false, ERR_SSL_PROTOCOL_ERROR); | 555 SSLSocketDataProvider ssl(SYNCHRONOUS, ERR_SSL_PROTOCOL_ERROR); |
| 556 mock_socket_factory.AddSSLSocketDataProvider(&ssl); | 556 mock_socket_factory.AddSSLSocketDataProvider(&ssl); |
| 557 | 557 |
| 558 TestCompletionCallback test_callback; | 558 TestCompletionCallback test_callback; |
| 559 | 559 |
| 560 scoped_ptr<SocketStreamEventRecorder> delegate( | 560 scoped_ptr<SocketStreamEventRecorder> delegate( |
| 561 new SocketStreamEventRecorder(test_callback.callback())); | 561 new SocketStreamEventRecorder(test_callback.callback())); |
| 562 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, | 562 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, |
| 563 base::Unretained(delegate.get()))); | 563 base::Unretained(delegate.get()))); |
| 564 | 564 |
| 565 scoped_refptr<SocketStream> socket_stream( | 565 scoped_refptr<SocketStream> socket_stream( |
| (...skipping 26 matching lines...) Expand all Loading... |
| 592 "Host: example.com\r\n" | 592 "Host: example.com\r\n" |
| 593 "Proxy-Connection: keep-alive\r\n\r\n") | 593 "Proxy-Connection: keep-alive\r\n\r\n") |
| 594 }; | 594 }; |
| 595 MockRead data_reads[] = { | 595 MockRead data_reads[] = { |
| 596 MockRead("HTTP/1.1 200 Connection Established\r\n"), | 596 MockRead("HTTP/1.1 200 Connection Established\r\n"), |
| 597 MockRead("Proxy-agent: Apache/2.2.8\r\n"), | 597 MockRead("Proxy-agent: Apache/2.2.8\r\n"), |
| 598 MockRead("\r\n"), | 598 MockRead("\r\n"), |
| 599 // SocketStream::DoClose is run asynchronously. Socket can be read after | 599 // SocketStream::DoClose is run asynchronously. Socket can be read after |
| 600 // "\r\n". We have to give ERR_IO_PENDING to SocketStream then to indicate | 600 // "\r\n". We have to give ERR_IO_PENDING to SocketStream then to indicate |
| 601 // server doesn't close the connection. | 601 // server doesn't close the connection. |
| 602 MockRead(true, ERR_IO_PENDING) | 602 MockRead(ASYNC, ERR_IO_PENDING) |
| 603 }; | 603 }; |
| 604 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 604 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 605 data_writes, arraysize(data_writes)); | 605 data_writes, arraysize(data_writes)); |
| 606 mock_socket_factory.AddSocketDataProvider(&data); | 606 mock_socket_factory.AddSocketDataProvider(&data); |
| 607 SSLSocketDataProvider ssl(false, OK); | 607 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); |
| 608 mock_socket_factory.AddSSLSocketDataProvider(&ssl); | 608 mock_socket_factory.AddSSLSocketDataProvider(&ssl); |
| 609 | 609 |
| 610 TestCompletionCallback test_callback; | 610 TestCompletionCallback test_callback; |
| 611 | 611 |
| 612 scoped_ptr<SocketStreamEventRecorder> delegate( | 612 scoped_ptr<SocketStreamEventRecorder> delegate( |
| 613 new SocketStreamEventRecorder(test_callback.callback())); | 613 new SocketStreamEventRecorder(test_callback.callback())); |
| 614 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, | 614 delegate->SetOnConnected(base::Bind(&SocketStreamEventRecorder::DoClose, |
| 615 base::Unretained(delegate.get()))); | 615 base::Unretained(delegate.get()))); |
| 616 | 616 |
| 617 scoped_refptr<SocketStream> socket_stream( | 617 scoped_refptr<SocketStream> socket_stream( |
| (...skipping 13 matching lines...) Expand all Loading... |
| 631 | 631 |
| 632 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, | 632 EXPECT_EQ(SocketStreamEvent::EVENT_START_OPEN_CONNECTION, |
| 633 events[0].event_type); | 633 events[0].event_type); |
| 634 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type); | 634 EXPECT_EQ(SocketStreamEvent::EVENT_CONNECTED, events[1].event_type); |
| 635 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[2].event_type); | 635 EXPECT_EQ(SocketStreamEvent::EVENT_ERROR, events[2].event_type); |
| 636 EXPECT_EQ(net::ERR_ABORTED, events[2].error_code); | 636 EXPECT_EQ(net::ERR_ABORTED, events[2].error_code); |
| 637 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type); | 637 EXPECT_EQ(SocketStreamEvent::EVENT_CLOSE, events[3].event_type); |
| 638 } | 638 } |
| 639 | 639 |
| 640 } // namespace net | 640 } // namespace net |
| OLD | NEW |