| 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 #ifndef NET_SOCKET_SOCKET_TEST_UTIL_H_ | 5 #ifndef NET_SOCKET_SOCKET_TEST_UTIL_H_ |
| 6 #define NET_SOCKET_SOCKET_TEST_UTIL_H_ | 6 #define NET_SOCKET_SOCKET_TEST_UTIL_H_ |
| 7 | 7 |
| 8 #include <cstring> | 8 #include <cstring> |
| 9 #include <deque> | 9 #include <deque> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 | 236 |
| 237 // SocketDataProvider which responds based on static tables of mock reads and | 237 // SocketDataProvider which responds based on static tables of mock reads and |
| 238 // writes. | 238 // writes. |
| 239 class StaticSocketDataProvider : public SocketDataProvider { | 239 class StaticSocketDataProvider : public SocketDataProvider { |
| 240 public: | 240 public: |
| 241 StaticSocketDataProvider(); | 241 StaticSocketDataProvider(); |
| 242 StaticSocketDataProvider(MockRead* reads, | 242 StaticSocketDataProvider(MockRead* reads, |
| 243 size_t reads_count, | 243 size_t reads_count, |
| 244 MockWrite* writes, | 244 MockWrite* writes, |
| 245 size_t writes_count); | 245 size_t writes_count); |
| 246 virtual ~StaticSocketDataProvider(); | 246 ~StaticSocketDataProvider() override; |
| 247 | 247 |
| 248 // These functions get access to the next available read and write data. | 248 // These functions get access to the next available read and write data. |
| 249 const MockRead& PeekRead() const; | 249 const MockRead& PeekRead() const; |
| 250 const MockWrite& PeekWrite() const; | 250 const MockWrite& PeekWrite() const; |
| 251 // These functions get random access to the read and write data, for timing. | 251 // These functions get random access to the read and write data, for timing. |
| 252 const MockRead& PeekRead(size_t index) const; | 252 const MockRead& PeekRead(size_t index) const; |
| 253 const MockWrite& PeekWrite(size_t index) const; | 253 const MockWrite& PeekWrite(size_t index) const; |
| 254 size_t read_index() const { return read_index_; } | 254 size_t read_index() const { return read_index_; } |
| 255 size_t write_index() const { return write_index_; } | 255 size_t write_index() const { return write_index_; } |
| 256 size_t read_count() const { return read_count_; } | 256 size_t read_count() const { return read_count_; } |
| 257 size_t write_count() const { return write_count_; } | 257 size_t write_count() const { return write_count_; } |
| 258 | 258 |
| 259 bool at_read_eof() const { return read_index_ >= read_count_; } | 259 bool at_read_eof() const { return read_index_ >= read_count_; } |
| 260 bool at_write_eof() const { return write_index_ >= write_count_; } | 260 bool at_write_eof() const { return write_index_ >= write_count_; } |
| 261 | 261 |
| 262 virtual void CompleteRead() {} | 262 virtual void CompleteRead() {} |
| 263 | 263 |
| 264 // SocketDataProvider implementation. | 264 // SocketDataProvider implementation. |
| 265 virtual MockRead GetNextRead() override; | 265 MockRead GetNextRead() override; |
| 266 virtual MockWriteResult OnWrite(const std::string& data) override; | 266 MockWriteResult OnWrite(const std::string& data) override; |
| 267 virtual void Reset() override; | 267 void Reset() override; |
| 268 | 268 |
| 269 private: | 269 private: |
| 270 MockRead* reads_; | 270 MockRead* reads_; |
| 271 size_t read_index_; | 271 size_t read_index_; |
| 272 size_t read_count_; | 272 size_t read_count_; |
| 273 MockWrite* writes_; | 273 MockWrite* writes_; |
| 274 size_t write_index_; | 274 size_t write_index_; |
| 275 size_t write_count_; | 275 size_t write_count_; |
| 276 | 276 |
| 277 DISALLOW_COPY_AND_ASSIGN(StaticSocketDataProvider); | 277 DISALLOW_COPY_AND_ASSIGN(StaticSocketDataProvider); |
| 278 }; | 278 }; |
| 279 | 279 |
| 280 // SocketDataProvider which can make decisions about next mock reads based on | 280 // SocketDataProvider which can make decisions about next mock reads based on |
| 281 // received writes. It can also be used to enforce order of operations, for | 281 // received writes. It can also be used to enforce order of operations, for |
| 282 // example that tested code must send the "Hello!" message before receiving | 282 // example that tested code must send the "Hello!" message before receiving |
| 283 // response. This is useful for testing conversation-like protocols like FTP. | 283 // response. This is useful for testing conversation-like protocols like FTP. |
| 284 class DynamicSocketDataProvider : public SocketDataProvider { | 284 class DynamicSocketDataProvider : public SocketDataProvider { |
| 285 public: | 285 public: |
| 286 DynamicSocketDataProvider(); | 286 DynamicSocketDataProvider(); |
| 287 virtual ~DynamicSocketDataProvider(); | 287 ~DynamicSocketDataProvider() override; |
| 288 | 288 |
| 289 int short_read_limit() const { return short_read_limit_; } | 289 int short_read_limit() const { return short_read_limit_; } |
| 290 void set_short_read_limit(int limit) { short_read_limit_ = limit; } | 290 void set_short_read_limit(int limit) { short_read_limit_ = limit; } |
| 291 | 291 |
| 292 void allow_unconsumed_reads(bool allow) { allow_unconsumed_reads_ = allow; } | 292 void allow_unconsumed_reads(bool allow) { allow_unconsumed_reads_ = allow; } |
| 293 | 293 |
| 294 // SocketDataProvider implementation. | 294 // SocketDataProvider implementation. |
| 295 virtual MockRead GetNextRead() override; | 295 MockRead GetNextRead() override; |
| 296 virtual MockWriteResult OnWrite(const std::string& data) = 0; | 296 virtual MockWriteResult OnWrite(const std::string& data) = 0; |
| 297 virtual void Reset() override; | 297 void Reset() override; |
| 298 | 298 |
| 299 protected: | 299 protected: |
| 300 // The next time there is a read from this socket, it will return |data|. | 300 // The next time there is a read from this socket, it will return |data|. |
| 301 // Before calling SimulateRead next time, the previous data must be consumed. | 301 // Before calling SimulateRead next time, the previous data must be consumed. |
| 302 void SimulateRead(const char* data, size_t length); | 302 void SimulateRead(const char* data, size_t length); |
| 303 void SimulateRead(const char* data) { SimulateRead(data, std::strlen(data)); } | 303 void SimulateRead(const char* data) { SimulateRead(data, std::strlen(data)); } |
| 304 | 304 |
| 305 private: | 305 private: |
| 306 std::deque<MockRead> reads_; | 306 std::deque<MockRead> reads_; |
| 307 | 307 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 364 // a MockRead to complete. | 364 // a MockRead to complete. |
| 365 // |writes| the list of MockWrite completions. | 365 // |writes| the list of MockWrite completions. |
| 366 // Note: For stream sockets, the MockRead list must end with a EOF, e.g., a | 366 // Note: For stream sockets, the MockRead list must end with a EOF, e.g., a |
| 367 // MockRead(true, 0, 0); | 367 // MockRead(true, 0, 0); |
| 368 DelayedSocketData(const MockConnect& connect, | 368 DelayedSocketData(const MockConnect& connect, |
| 369 int write_delay, | 369 int write_delay, |
| 370 MockRead* reads, | 370 MockRead* reads, |
| 371 size_t reads_count, | 371 size_t reads_count, |
| 372 MockWrite* writes, | 372 MockWrite* writes, |
| 373 size_t writes_count); | 373 size_t writes_count); |
| 374 virtual ~DelayedSocketData(); | 374 ~DelayedSocketData() override; |
| 375 | 375 |
| 376 void ForceNextRead(); | 376 void ForceNextRead(); |
| 377 | 377 |
| 378 // StaticSocketDataProvider: | 378 // StaticSocketDataProvider: |
| 379 virtual MockRead GetNextRead() override; | 379 MockRead GetNextRead() override; |
| 380 virtual MockWriteResult OnWrite(const std::string& data) override; | 380 MockWriteResult OnWrite(const std::string& data) override; |
| 381 virtual void Reset() override; | 381 void Reset() override; |
| 382 virtual void CompleteRead() override; | 382 void CompleteRead() override; |
| 383 | 383 |
| 384 private: | 384 private: |
| 385 int write_delay_; | 385 int write_delay_; |
| 386 bool read_in_progress_; | 386 bool read_in_progress_; |
| 387 | 387 |
| 388 base::WeakPtrFactory<DelayedSocketData> weak_factory_; | 388 base::WeakPtrFactory<DelayedSocketData> weak_factory_; |
| 389 | 389 |
| 390 DISALLOW_COPY_AND_ASSIGN(DelayedSocketData); | 390 DISALLOW_COPY_AND_ASSIGN(DelayedSocketData); |
| 391 }; | 391 }; |
| 392 | 392 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 405 public: | 405 public: |
| 406 // |reads| the list of MockRead completions. | 406 // |reads| the list of MockRead completions. |
| 407 // |writes| the list of MockWrite completions. | 407 // |writes| the list of MockWrite completions. |
| 408 // Note: All MockReads and MockWrites must be async. | 408 // Note: All MockReads and MockWrites must be async. |
| 409 // Note: For stream sockets, the MockRead list must end with a EOF, e.g., a | 409 // Note: For stream sockets, the MockRead list must end with a EOF, e.g., a |
| 410 // MockRead(true, 0, 0); | 410 // MockRead(true, 0, 0); |
| 411 OrderedSocketData(MockRead* reads, | 411 OrderedSocketData(MockRead* reads, |
| 412 size_t reads_count, | 412 size_t reads_count, |
| 413 MockWrite* writes, | 413 MockWrite* writes, |
| 414 size_t writes_count); | 414 size_t writes_count); |
| 415 virtual ~OrderedSocketData(); | 415 ~OrderedSocketData() override; |
| 416 | 416 |
| 417 // |connect| the result for the connect phase. | 417 // |connect| the result for the connect phase. |
| 418 // |reads| the list of MockRead completions. | 418 // |reads| the list of MockRead completions. |
| 419 // |writes| the list of MockWrite completions. | 419 // |writes| the list of MockWrite completions. |
| 420 // Note: All MockReads and MockWrites must be async. | 420 // Note: All MockReads and MockWrites must be async. |
| 421 // Note: For stream sockets, the MockRead list must end with a EOF, e.g., a | 421 // Note: For stream sockets, the MockRead list must end with a EOF, e.g., a |
| 422 // MockRead(true, 0, 0); | 422 // MockRead(true, 0, 0); |
| 423 OrderedSocketData(const MockConnect& connect, | 423 OrderedSocketData(const MockConnect& connect, |
| 424 MockRead* reads, | 424 MockRead* reads, |
| 425 size_t reads_count, | 425 size_t reads_count, |
| 426 MockWrite* writes, | 426 MockWrite* writes, |
| 427 size_t writes_count); | 427 size_t writes_count); |
| 428 | 428 |
| 429 // Posts a quit message to the current message loop, if one is running. | 429 // Posts a quit message to the current message loop, if one is running. |
| 430 void EndLoop(); | 430 void EndLoop(); |
| 431 | 431 |
| 432 // StaticSocketDataProvider: | 432 // StaticSocketDataProvider: |
| 433 virtual MockRead GetNextRead() override; | 433 MockRead GetNextRead() override; |
| 434 virtual MockWriteResult OnWrite(const std::string& data) override; | 434 MockWriteResult OnWrite(const std::string& data) override; |
| 435 virtual void Reset() override; | 435 void Reset() override; |
| 436 virtual void CompleteRead() override; | 436 void CompleteRead() override; |
| 437 | 437 |
| 438 private: | 438 private: |
| 439 int sequence_number_; | 439 int sequence_number_; |
| 440 int loop_stop_stage_; | 440 int loop_stop_stage_; |
| 441 bool blocked_; | 441 bool blocked_; |
| 442 | 442 |
| 443 base::WeakPtrFactory<OrderedSocketData> weak_factory_; | 443 base::WeakPtrFactory<OrderedSocketData> weak_factory_; |
| 444 | 444 |
| 445 DISALLOW_COPY_AND_ASSIGN(OrderedSocketData); | 445 DISALLOW_COPY_AND_ASSIGN(OrderedSocketData); |
| 446 }; | 446 }; |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 529 protected: | 529 protected: |
| 530 virtual ~Delegate() {} | 530 virtual ~Delegate() {} |
| 531 }; | 531 }; |
| 532 | 532 |
| 533 // |reads| the list of MockRead completions. | 533 // |reads| the list of MockRead completions. |
| 534 // |writes| the list of MockWrite completions. | 534 // |writes| the list of MockWrite completions. |
| 535 DeterministicSocketData(MockRead* reads, | 535 DeterministicSocketData(MockRead* reads, |
| 536 size_t reads_count, | 536 size_t reads_count, |
| 537 MockWrite* writes, | 537 MockWrite* writes, |
| 538 size_t writes_count); | 538 size_t writes_count); |
| 539 virtual ~DeterministicSocketData(); | 539 ~DeterministicSocketData() override; |
| 540 | 540 |
| 541 // Consume all the data up to the give stop point (via SetStop()). | 541 // Consume all the data up to the give stop point (via SetStop()). |
| 542 void Run(); | 542 void Run(); |
| 543 | 543 |
| 544 // Set the stop point to be |steps| from now, and then invoke Run(). | 544 // Set the stop point to be |steps| from now, and then invoke Run(). |
| 545 void RunFor(int steps); | 545 void RunFor(int steps); |
| 546 | 546 |
| 547 // Stop at step |seq|, which must be in the future. | 547 // Stop at step |seq|, which must be in the future. |
| 548 virtual void SetStop(int seq); | 548 virtual void SetStop(int seq); |
| 549 | 549 |
| 550 // Stop |seq| steps after the current step. | 550 // Stop |seq| steps after the current step. |
| 551 virtual void StopAfter(int seq); | 551 virtual void StopAfter(int seq); |
| 552 bool stopped() const { return stopped_; } | 552 bool stopped() const { return stopped_; } |
| 553 void SetStopped(bool val) { stopped_ = val; } | 553 void SetStopped(bool val) { stopped_ = val; } |
| 554 MockRead& current_read() { return current_read_; } | 554 MockRead& current_read() { return current_read_; } |
| 555 MockWrite& current_write() { return current_write_; } | 555 MockWrite& current_write() { return current_write_; } |
| 556 int sequence_number() const { return sequence_number_; } | 556 int sequence_number() const { return sequence_number_; } |
| 557 void set_delegate(base::WeakPtr<Delegate> delegate) { delegate_ = delegate; } | 557 void set_delegate(base::WeakPtr<Delegate> delegate) { delegate_ = delegate; } |
| 558 | 558 |
| 559 // StaticSocketDataProvider: | 559 // StaticSocketDataProvider: |
| 560 | 560 |
| 561 // When the socket calls Read(), that calls GetNextRead(), and expects either | 561 // When the socket calls Read(), that calls GetNextRead(), and expects either |
| 562 // ERR_IO_PENDING or data. | 562 // ERR_IO_PENDING or data. |
| 563 virtual MockRead GetNextRead() override; | 563 MockRead GetNextRead() override; |
| 564 | 564 |
| 565 // When the socket calls Write(), it always completes synchronously. OnWrite() | 565 // When the socket calls Write(), it always completes synchronously. OnWrite() |
| 566 // checks to make sure the written data matches the expected data. The | 566 // checks to make sure the written data matches the expected data. The |
| 567 // callback will not be invoked until its sequence number is reached. | 567 // callback will not be invoked until its sequence number is reached. |
| 568 virtual MockWriteResult OnWrite(const std::string& data) override; | 568 MockWriteResult OnWrite(const std::string& data) override; |
| 569 virtual void Reset() override; | 569 void Reset() override; |
| 570 virtual void CompleteRead() override {} | 570 void CompleteRead() override {} |
| 571 | 571 |
| 572 private: | 572 private: |
| 573 // Invoke the read and write callbacks, if the timing is appropriate. | 573 // Invoke the read and write callbacks, if the timing is appropriate. |
| 574 void InvokeCallbacks(); | 574 void InvokeCallbacks(); |
| 575 | 575 |
| 576 void NextStep(); | 576 void NextStep(); |
| 577 | 577 |
| 578 void VerifyCorrectSequenceNumbers(MockRead* reads, | 578 void VerifyCorrectSequenceNumbers(MockRead* reads, |
| 579 size_t reads_count, | 579 size_t reads_count, |
| 580 MockWrite* writes, | 580 MockWrite* writes, |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 626 class MockSSLClientSocket; | 626 class MockSSLClientSocket; |
| 627 | 627 |
| 628 // ClientSocketFactory which contains arrays of sockets of each type. | 628 // ClientSocketFactory which contains arrays of sockets of each type. |
| 629 // You should first fill the arrays using AddMock{SSL,}Socket. When the factory | 629 // You should first fill the arrays using AddMock{SSL,}Socket. When the factory |
| 630 // is asked to create a socket, it takes next entry from appropriate array. | 630 // is asked to create a socket, it takes next entry from appropriate array. |
| 631 // You can use ResetNextMockIndexes to reset that next entry index for all mock | 631 // You can use ResetNextMockIndexes to reset that next entry index for all mock |
| 632 // socket types. | 632 // socket types. |
| 633 class MockClientSocketFactory : public ClientSocketFactory { | 633 class MockClientSocketFactory : public ClientSocketFactory { |
| 634 public: | 634 public: |
| 635 MockClientSocketFactory(); | 635 MockClientSocketFactory(); |
| 636 virtual ~MockClientSocketFactory(); | 636 ~MockClientSocketFactory() override; |
| 637 | 637 |
| 638 void AddSocketDataProvider(SocketDataProvider* socket); | 638 void AddSocketDataProvider(SocketDataProvider* socket); |
| 639 void AddSSLSocketDataProvider(SSLSocketDataProvider* socket); | 639 void AddSSLSocketDataProvider(SSLSocketDataProvider* socket); |
| 640 void ResetNextMockIndexes(); | 640 void ResetNextMockIndexes(); |
| 641 | 641 |
| 642 SocketDataProviderArray<SocketDataProvider>& mock_data() { | 642 SocketDataProviderArray<SocketDataProvider>& mock_data() { |
| 643 return mock_data_; | 643 return mock_data_; |
| 644 } | 644 } |
| 645 | 645 |
| 646 // Note: this method is unsafe; the elements of the returned vector | 646 // Note: this method is unsafe; the elements of the returned vector |
| 647 // are not necessarily valid. | 647 // are not necessarily valid. |
| 648 const std::vector<MockSSLClientSocket*>& ssl_client_sockets() const { | 648 const std::vector<MockSSLClientSocket*>& ssl_client_sockets() const { |
| 649 return ssl_client_sockets_; | 649 return ssl_client_sockets_; |
| 650 } | 650 } |
| 651 | 651 |
| 652 // ClientSocketFactory | 652 // ClientSocketFactory |
| 653 virtual scoped_ptr<DatagramClientSocket> CreateDatagramClientSocket( | 653 scoped_ptr<DatagramClientSocket> CreateDatagramClientSocket( |
| 654 DatagramSocket::BindType bind_type, | 654 DatagramSocket::BindType bind_type, |
| 655 const RandIntCallback& rand_int_cb, | 655 const RandIntCallback& rand_int_cb, |
| 656 NetLog* net_log, | 656 NetLog* net_log, |
| 657 const NetLog::Source& source) override; | 657 const NetLog::Source& source) override; |
| 658 virtual scoped_ptr<StreamSocket> CreateTransportClientSocket( | 658 scoped_ptr<StreamSocket> CreateTransportClientSocket( |
| 659 const AddressList& addresses, | 659 const AddressList& addresses, |
| 660 NetLog* net_log, | 660 NetLog* net_log, |
| 661 const NetLog::Source& source) override; | 661 const NetLog::Source& source) override; |
| 662 virtual scoped_ptr<SSLClientSocket> CreateSSLClientSocket( | 662 scoped_ptr<SSLClientSocket> CreateSSLClientSocket( |
| 663 scoped_ptr<ClientSocketHandle> transport_socket, | 663 scoped_ptr<ClientSocketHandle> transport_socket, |
| 664 const HostPortPair& host_and_port, | 664 const HostPortPair& host_and_port, |
| 665 const SSLConfig& ssl_config, | 665 const SSLConfig& ssl_config, |
| 666 const SSLClientSocketContext& context) override; | 666 const SSLClientSocketContext& context) override; |
| 667 virtual void ClearSSLSessionCache() override; | 667 void ClearSSLSessionCache() override; |
| 668 | 668 |
| 669 private: | 669 private: |
| 670 SocketDataProviderArray<SocketDataProvider> mock_data_; | 670 SocketDataProviderArray<SocketDataProvider> mock_data_; |
| 671 SocketDataProviderArray<SSLSocketDataProvider> mock_ssl_data_; | 671 SocketDataProviderArray<SSLSocketDataProvider> mock_ssl_data_; |
| 672 std::vector<MockSSLClientSocket*> ssl_client_sockets_; | 672 std::vector<MockSSLClientSocket*> ssl_client_sockets_; |
| 673 }; | 673 }; |
| 674 | 674 |
| 675 class MockClientSocket : public SSLClientSocket { | 675 class MockClientSocket : public SSLClientSocket { |
| 676 public: | 676 public: |
| 677 // Value returned by GetTLSUniqueChannelBinding(). | 677 // Value returned by GetTLSUniqueChannelBinding(). |
| 678 static const char kTlsUnique[]; | 678 static const char kTlsUnique[]; |
| 679 | 679 |
| 680 // The BoundNetLog is needed to test LoadTimingInfo, which uses NetLog IDs as | 680 // The BoundNetLog is needed to test LoadTimingInfo, which uses NetLog IDs as |
| 681 // unique socket IDs. | 681 // unique socket IDs. |
| 682 explicit MockClientSocket(const BoundNetLog& net_log); | 682 explicit MockClientSocket(const BoundNetLog& net_log); |
| 683 | 683 |
| 684 // Socket implementation. | 684 // Socket implementation. |
| 685 virtual int Read(IOBuffer* buf, | 685 virtual int Read(IOBuffer* buf, |
| 686 int buf_len, | 686 int buf_len, |
| 687 const CompletionCallback& callback) = 0; | 687 const CompletionCallback& callback) = 0; |
| 688 virtual int Write(IOBuffer* buf, | 688 virtual int Write(IOBuffer* buf, |
| 689 int buf_len, | 689 int buf_len, |
| 690 const CompletionCallback& callback) = 0; | 690 const CompletionCallback& callback) = 0; |
| 691 virtual int SetReceiveBufferSize(int32 size) override; | 691 int SetReceiveBufferSize(int32 size) override; |
| 692 virtual int SetSendBufferSize(int32 size) override; | 692 int SetSendBufferSize(int32 size) override; |
| 693 | 693 |
| 694 // StreamSocket implementation. | 694 // StreamSocket implementation. |
| 695 virtual int Connect(const CompletionCallback& callback) = 0; | 695 virtual int Connect(const CompletionCallback& callback) = 0; |
| 696 virtual void Disconnect() override; | 696 void Disconnect() override; |
| 697 virtual bool IsConnected() const override; | 697 bool IsConnected() const override; |
| 698 virtual bool IsConnectedAndIdle() const override; | 698 bool IsConnectedAndIdle() const override; |
| 699 virtual int GetPeerAddress(IPEndPoint* address) const override; | 699 int GetPeerAddress(IPEndPoint* address) const override; |
| 700 virtual int GetLocalAddress(IPEndPoint* address) const override; | 700 int GetLocalAddress(IPEndPoint* address) const override; |
| 701 virtual const BoundNetLog& NetLog() const override; | 701 const BoundNetLog& NetLog() const override; |
| 702 virtual void SetSubresourceSpeculation() override {} | 702 void SetSubresourceSpeculation() override {} |
| 703 virtual void SetOmniboxSpeculation() override {} | 703 void SetOmniboxSpeculation() override {} |
| 704 | 704 |
| 705 // SSLClientSocket implementation. | 705 // SSLClientSocket implementation. |
| 706 virtual std::string GetSessionCacheKey() const override; | 706 std::string GetSessionCacheKey() const override; |
| 707 virtual bool InSessionCache() const override; | 707 bool InSessionCache() const override; |
| 708 virtual void SetHandshakeCompletionCallback(const base::Closure& cb) override; | 708 void SetHandshakeCompletionCallback(const base::Closure& cb) override; |
| 709 virtual void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info) | 709 void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info) override; |
| 710 override; | 710 int ExportKeyingMaterial(const base::StringPiece& label, |
| 711 virtual int ExportKeyingMaterial(const base::StringPiece& label, | 711 bool has_context, |
| 712 bool has_context, | 712 const base::StringPiece& context, |
| 713 const base::StringPiece& context, | 713 unsigned char* out, |
| 714 unsigned char* out, | 714 unsigned int outlen) override; |
| 715 unsigned int outlen) override; | 715 int GetTLSUniqueChannelBinding(std::string* out) override; |
| 716 virtual int GetTLSUniqueChannelBinding(std::string* out) override; | 716 NextProtoStatus GetNextProto(std::string* proto) override; |
| 717 virtual NextProtoStatus GetNextProto(std::string* proto) override; | 717 ChannelIDService* GetChannelIDService() const override; |
| 718 virtual ChannelIDService* GetChannelIDService() const override; | |
| 719 | 718 |
| 720 protected: | 719 protected: |
| 721 virtual ~MockClientSocket(); | 720 ~MockClientSocket() override; |
| 722 void RunCallbackAsync(const CompletionCallback& callback, int result); | 721 void RunCallbackAsync(const CompletionCallback& callback, int result); |
| 723 void RunCallback(const CompletionCallback& callback, int result); | 722 void RunCallback(const CompletionCallback& callback, int result); |
| 724 | 723 |
| 725 // SSLClientSocket implementation. | 724 // SSLClientSocket implementation. |
| 726 virtual scoped_refptr<X509Certificate> GetUnverifiedServerCertificateChain() | 725 scoped_refptr<X509Certificate> GetUnverifiedServerCertificateChain() |
| 727 const override; | 726 const override; |
| 728 | 727 |
| 729 // True if Connect completed successfully and Disconnect hasn't been called. | 728 // True if Connect completed successfully and Disconnect hasn't been called. |
| 730 bool connected_; | 729 bool connected_; |
| 731 | 730 |
| 732 // Address of the "remote" peer we're connected to. | 731 // Address of the "remote" peer we're connected to. |
| 733 IPEndPoint peer_addr_; | 732 IPEndPoint peer_addr_; |
| 734 | 733 |
| 735 BoundNetLog net_log_; | 734 BoundNetLog net_log_; |
| 736 | 735 |
| 737 private: | 736 private: |
| 738 base::WeakPtrFactory<MockClientSocket> weak_factory_; | 737 base::WeakPtrFactory<MockClientSocket> weak_factory_; |
| 739 | 738 |
| 740 DISALLOW_COPY_AND_ASSIGN(MockClientSocket); | 739 DISALLOW_COPY_AND_ASSIGN(MockClientSocket); |
| 741 }; | 740 }; |
| 742 | 741 |
| 743 class MockTCPClientSocket : public MockClientSocket, public AsyncSocket { | 742 class MockTCPClientSocket : public MockClientSocket, public AsyncSocket { |
| 744 public: | 743 public: |
| 745 MockTCPClientSocket(const AddressList& addresses, | 744 MockTCPClientSocket(const AddressList& addresses, |
| 746 net::NetLog* net_log, | 745 net::NetLog* net_log, |
| 747 SocketDataProvider* socket); | 746 SocketDataProvider* socket); |
| 748 virtual ~MockTCPClientSocket(); | 747 ~MockTCPClientSocket() override; |
| 749 | 748 |
| 750 const AddressList& addresses() const { return addresses_; } | 749 const AddressList& addresses() const { return addresses_; } |
| 751 | 750 |
| 752 // Socket implementation. | 751 // Socket implementation. |
| 753 virtual int Read(IOBuffer* buf, | 752 int Read(IOBuffer* buf, |
| 754 int buf_len, | 753 int buf_len, |
| 755 const CompletionCallback& callback) override; | 754 const CompletionCallback& callback) override; |
| 756 virtual int Write(IOBuffer* buf, | 755 int Write(IOBuffer* buf, |
| 757 int buf_len, | 756 int buf_len, |
| 758 const CompletionCallback& callback) override; | 757 const CompletionCallback& callback) override; |
| 759 | 758 |
| 760 // StreamSocket implementation. | 759 // StreamSocket implementation. |
| 761 virtual int Connect(const CompletionCallback& callback) override; | 760 int Connect(const CompletionCallback& callback) override; |
| 762 virtual void Disconnect() override; | 761 void Disconnect() override; |
| 763 virtual bool IsConnected() const override; | 762 bool IsConnected() const override; |
| 764 virtual bool IsConnectedAndIdle() const override; | 763 bool IsConnectedAndIdle() const override; |
| 765 virtual int GetPeerAddress(IPEndPoint* address) const override; | 764 int GetPeerAddress(IPEndPoint* address) const override; |
| 766 virtual bool WasEverUsed() const override; | 765 bool WasEverUsed() const override; |
| 767 virtual bool UsingTCPFastOpen() const override; | 766 bool UsingTCPFastOpen() const override; |
| 768 virtual bool WasNpnNegotiated() const override; | 767 bool WasNpnNegotiated() const override; |
| 769 virtual bool GetSSLInfo(SSLInfo* ssl_info) override; | 768 bool GetSSLInfo(SSLInfo* ssl_info) override; |
| 770 | 769 |
| 771 // AsyncSocket: | 770 // AsyncSocket: |
| 772 virtual void OnReadComplete(const MockRead& data) override; | 771 void OnReadComplete(const MockRead& data) override; |
| 773 virtual void OnConnectComplete(const MockConnect& data) override; | 772 void OnConnectComplete(const MockConnect& data) override; |
| 774 | 773 |
| 775 private: | 774 private: |
| 776 int CompleteRead(); | 775 int CompleteRead(); |
| 777 | 776 |
| 778 AddressList addresses_; | 777 AddressList addresses_; |
| 779 | 778 |
| 780 SocketDataProvider* data_; | 779 SocketDataProvider* data_; |
| 781 int read_offset_; | 780 int read_offset_; |
| 782 MockRead read_data_; | 781 MockRead read_data_; |
| 783 bool need_read_data_; | 782 bool need_read_data_; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 844 | 843 |
| 845 // Mock UDP socket to be used in conjunction with DeterministicSocketData. | 844 // Mock UDP socket to be used in conjunction with DeterministicSocketData. |
| 846 class DeterministicMockUDPClientSocket | 845 class DeterministicMockUDPClientSocket |
| 847 : public DatagramClientSocket, | 846 : public DatagramClientSocket, |
| 848 public AsyncSocket, | 847 public AsyncSocket, |
| 849 public DeterministicSocketData::Delegate, | 848 public DeterministicSocketData::Delegate, |
| 850 public base::SupportsWeakPtr<DeterministicMockUDPClientSocket> { | 849 public base::SupportsWeakPtr<DeterministicMockUDPClientSocket> { |
| 851 public: | 850 public: |
| 852 DeterministicMockUDPClientSocket(net::NetLog* net_log, | 851 DeterministicMockUDPClientSocket(net::NetLog* net_log, |
| 853 DeterministicSocketData* data); | 852 DeterministicSocketData* data); |
| 854 virtual ~DeterministicMockUDPClientSocket(); | 853 ~DeterministicMockUDPClientSocket() override; |
| 855 | 854 |
| 856 // DeterministicSocketData::Delegate: | 855 // DeterministicSocketData::Delegate: |
| 857 virtual bool WritePending() const override; | 856 bool WritePending() const override; |
| 858 virtual bool ReadPending() const override; | 857 bool ReadPending() const override; |
| 859 virtual void CompleteWrite() override; | 858 void CompleteWrite() override; |
| 860 virtual int CompleteRead() override; | 859 int CompleteRead() override; |
| 861 | 860 |
| 862 // Socket implementation. | 861 // Socket implementation. |
| 863 virtual int Read(IOBuffer* buf, | 862 int Read(IOBuffer* buf, |
| 864 int buf_len, | 863 int buf_len, |
| 865 const CompletionCallback& callback) override; | 864 const CompletionCallback& callback) override; |
| 866 virtual int Write(IOBuffer* buf, | 865 int Write(IOBuffer* buf, |
| 867 int buf_len, | 866 int buf_len, |
| 868 const CompletionCallback& callback) override; | 867 const CompletionCallback& callback) override; |
| 869 virtual int SetReceiveBufferSize(int32 size) override; | 868 int SetReceiveBufferSize(int32 size) override; |
| 870 virtual int SetSendBufferSize(int32 size) override; | 869 int SetSendBufferSize(int32 size) override; |
| 871 | 870 |
| 872 // DatagramSocket implementation. | 871 // DatagramSocket implementation. |
| 873 virtual void Close() override; | 872 void Close() override; |
| 874 virtual int GetPeerAddress(IPEndPoint* address) const override; | 873 int GetPeerAddress(IPEndPoint* address) const override; |
| 875 virtual int GetLocalAddress(IPEndPoint* address) const override; | 874 int GetLocalAddress(IPEndPoint* address) const override; |
| 876 virtual const BoundNetLog& NetLog() const override; | 875 const BoundNetLog& NetLog() const override; |
| 877 | 876 |
| 878 // DatagramClientSocket implementation. | 877 // DatagramClientSocket implementation. |
| 879 virtual int Connect(const IPEndPoint& address) override; | 878 int Connect(const IPEndPoint& address) override; |
| 880 | 879 |
| 881 // AsyncSocket implementation. | 880 // AsyncSocket implementation. |
| 882 virtual void OnReadComplete(const MockRead& data) override; | 881 void OnReadComplete(const MockRead& data) override; |
| 883 virtual void OnConnectComplete(const MockConnect& data) override; | 882 void OnConnectComplete(const MockConnect& data) override; |
| 884 | 883 |
| 885 void set_source_port(int port) { source_port_ = port; } | 884 void set_source_port(int port) { source_port_ = port; } |
| 886 | 885 |
| 887 private: | 886 private: |
| 888 bool connected_; | 887 bool connected_; |
| 889 IPEndPoint peer_address_; | 888 IPEndPoint peer_address_; |
| 890 DeterministicSocketHelper helper_; | 889 DeterministicSocketHelper helper_; |
| 891 int source_port_; // Ephemeral source port. | 890 int source_port_; // Ephemeral source port. |
| 892 | 891 |
| 893 DISALLOW_COPY_AND_ASSIGN(DeterministicMockUDPClientSocket); | 892 DISALLOW_COPY_AND_ASSIGN(DeterministicMockUDPClientSocket); |
| 894 }; | 893 }; |
| 895 | 894 |
| 896 // Mock TCP socket to be used in conjunction with DeterministicSocketData. | 895 // Mock TCP socket to be used in conjunction with DeterministicSocketData. |
| 897 class DeterministicMockTCPClientSocket | 896 class DeterministicMockTCPClientSocket |
| 898 : public MockClientSocket, | 897 : public MockClientSocket, |
| 899 public AsyncSocket, | 898 public AsyncSocket, |
| 900 public DeterministicSocketData::Delegate, | 899 public DeterministicSocketData::Delegate, |
| 901 public base::SupportsWeakPtr<DeterministicMockTCPClientSocket> { | 900 public base::SupportsWeakPtr<DeterministicMockTCPClientSocket> { |
| 902 public: | 901 public: |
| 903 DeterministicMockTCPClientSocket(net::NetLog* net_log, | 902 DeterministicMockTCPClientSocket(net::NetLog* net_log, |
| 904 DeterministicSocketData* data); | 903 DeterministicSocketData* data); |
| 905 virtual ~DeterministicMockTCPClientSocket(); | 904 ~DeterministicMockTCPClientSocket() override; |
| 906 | 905 |
| 907 // DeterministicSocketData::Delegate: | 906 // DeterministicSocketData::Delegate: |
| 908 virtual bool WritePending() const override; | 907 bool WritePending() const override; |
| 909 virtual bool ReadPending() const override; | 908 bool ReadPending() const override; |
| 910 virtual void CompleteWrite() override; | 909 void CompleteWrite() override; |
| 911 virtual int CompleteRead() override; | 910 int CompleteRead() override; |
| 912 | 911 |
| 913 // Socket: | 912 // Socket: |
| 914 virtual int Write(IOBuffer* buf, | 913 int Write(IOBuffer* buf, |
| 915 int buf_len, | 914 int buf_len, |
| 916 const CompletionCallback& callback) override; | 915 const CompletionCallback& callback) override; |
| 917 virtual int Read(IOBuffer* buf, | 916 int Read(IOBuffer* buf, |
| 918 int buf_len, | 917 int buf_len, |
| 919 const CompletionCallback& callback) override; | 918 const CompletionCallback& callback) override; |
| 920 | 919 |
| 921 // StreamSocket: | 920 // StreamSocket: |
| 922 virtual int Connect(const CompletionCallback& callback) override; | 921 int Connect(const CompletionCallback& callback) override; |
| 923 virtual void Disconnect() override; | 922 void Disconnect() override; |
| 924 virtual bool IsConnected() const override; | 923 bool IsConnected() const override; |
| 925 virtual bool IsConnectedAndIdle() const override; | 924 bool IsConnectedAndIdle() const override; |
| 926 virtual bool WasEverUsed() const override; | 925 bool WasEverUsed() const override; |
| 927 virtual bool UsingTCPFastOpen() const override; | 926 bool UsingTCPFastOpen() const override; |
| 928 virtual bool WasNpnNegotiated() const override; | 927 bool WasNpnNegotiated() const override; |
| 929 virtual bool GetSSLInfo(SSLInfo* ssl_info) override; | 928 bool GetSSLInfo(SSLInfo* ssl_info) override; |
| 930 | 929 |
| 931 // AsyncSocket: | 930 // AsyncSocket: |
| 932 virtual void OnReadComplete(const MockRead& data) override; | 931 void OnReadComplete(const MockRead& data) override; |
| 933 virtual void OnConnectComplete(const MockConnect& data) override; | 932 void OnConnectComplete(const MockConnect& data) override; |
| 934 | 933 |
| 935 private: | 934 private: |
| 936 DeterministicSocketHelper helper_; | 935 DeterministicSocketHelper helper_; |
| 937 | 936 |
| 938 DISALLOW_COPY_AND_ASSIGN(DeterministicMockTCPClientSocket); | 937 DISALLOW_COPY_AND_ASSIGN(DeterministicMockTCPClientSocket); |
| 939 }; | 938 }; |
| 940 | 939 |
| 941 class MockSSLClientSocket : public MockClientSocket, public AsyncSocket { | 940 class MockSSLClientSocket : public MockClientSocket, public AsyncSocket { |
| 942 public: | 941 public: |
| 943 MockSSLClientSocket(scoped_ptr<ClientSocketHandle> transport_socket, | 942 MockSSLClientSocket(scoped_ptr<ClientSocketHandle> transport_socket, |
| 944 const HostPortPair& host_and_port, | 943 const HostPortPair& host_and_port, |
| 945 const SSLConfig& ssl_config, | 944 const SSLConfig& ssl_config, |
| 946 SSLSocketDataProvider* socket); | 945 SSLSocketDataProvider* socket); |
| 947 virtual ~MockSSLClientSocket(); | 946 ~MockSSLClientSocket() override; |
| 948 | 947 |
| 949 // Socket implementation. | 948 // Socket implementation. |
| 950 virtual int Read(IOBuffer* buf, | 949 int Read(IOBuffer* buf, |
| 951 int buf_len, | 950 int buf_len, |
| 952 const CompletionCallback& callback) override; | 951 const CompletionCallback& callback) override; |
| 953 virtual int Write(IOBuffer* buf, | 952 int Write(IOBuffer* buf, |
| 954 int buf_len, | 953 int buf_len, |
| 955 const CompletionCallback& callback) override; | 954 const CompletionCallback& callback) override; |
| 956 | 955 |
| 957 // StreamSocket implementation. | 956 // StreamSocket implementation. |
| 958 virtual int Connect(const CompletionCallback& callback) override; | 957 int Connect(const CompletionCallback& callback) override; |
| 959 virtual void Disconnect() override; | 958 void Disconnect() override; |
| 960 virtual bool IsConnected() const override; | 959 bool IsConnected() const override; |
| 961 virtual bool WasEverUsed() const override; | 960 bool WasEverUsed() const override; |
| 962 virtual bool UsingTCPFastOpen() const override; | 961 bool UsingTCPFastOpen() const override; |
| 963 virtual int GetPeerAddress(IPEndPoint* address) const override; | 962 int GetPeerAddress(IPEndPoint* address) const override; |
| 964 virtual bool WasNpnNegotiated() const override; | 963 bool WasNpnNegotiated() const override; |
| 965 virtual bool GetSSLInfo(SSLInfo* ssl_info) override; | 964 bool GetSSLInfo(SSLInfo* ssl_info) override; |
| 966 | 965 |
| 967 // SSLClientSocket implementation. | 966 // SSLClientSocket implementation. |
| 968 virtual std::string GetSessionCacheKey() const override; | 967 std::string GetSessionCacheKey() const override; |
| 969 virtual bool InSessionCache() const override; | 968 bool InSessionCache() const override; |
| 970 virtual void SetHandshakeCompletionCallback(const base::Closure& cb) override; | 969 void SetHandshakeCompletionCallback(const base::Closure& cb) override; |
| 971 virtual void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info) | 970 void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info) override; |
| 972 override; | 971 NextProtoStatus GetNextProto(std::string* proto) override; |
| 973 virtual NextProtoStatus GetNextProto(std::string* proto) override; | 972 bool set_was_npn_negotiated(bool negotiated) override; |
| 974 virtual bool set_was_npn_negotiated(bool negotiated) override; | 973 void set_protocol_negotiated(NextProto protocol_negotiated) override; |
| 975 virtual void set_protocol_negotiated(NextProto protocol_negotiated) override; | 974 NextProto GetNegotiatedProtocol() const override; |
| 976 virtual NextProto GetNegotiatedProtocol() const override; | |
| 977 | 975 |
| 978 // This MockSocket does not implement the manual async IO feature. | 976 // This MockSocket does not implement the manual async IO feature. |
| 979 virtual void OnReadComplete(const MockRead& data) override; | 977 void OnReadComplete(const MockRead& data) override; |
| 980 virtual void OnConnectComplete(const MockConnect& data) override; | 978 void OnConnectComplete(const MockConnect& data) override; |
| 981 | 979 |
| 982 virtual bool WasChannelIDSent() const override; | 980 bool WasChannelIDSent() const override; |
| 983 virtual void set_channel_id_sent(bool channel_id_sent) override; | 981 void set_channel_id_sent(bool channel_id_sent) override; |
| 984 virtual ChannelIDService* GetChannelIDService() const override; | 982 ChannelIDService* GetChannelIDService() const override; |
| 985 | 983 |
| 986 bool reached_connect() const { return reached_connect_; } | 984 bool reached_connect() const { return reached_connect_; } |
| 987 | 985 |
| 988 // Resumes the connection of a socket that was paused for testing. | 986 // Resumes the connection of a socket that was paused for testing. |
| 989 // |connect_callback_| should be set before invoking this method. | 987 // |connect_callback_| should be set before invoking this method. |
| 990 void RestartPausedConnect(); | 988 void RestartPausedConnect(); |
| 991 | 989 |
| 992 private: | 990 private: |
| 993 enum ConnectState { | 991 enum ConnectState { |
| 994 STATE_NONE, | 992 STATE_NONE, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1021 base::Closure handshake_completion_callback_; | 1019 base::Closure handshake_completion_callback_; |
| 1022 | 1020 |
| 1023 base::WeakPtrFactory<MockSSLClientSocket> weak_factory_; | 1021 base::WeakPtrFactory<MockSSLClientSocket> weak_factory_; |
| 1024 | 1022 |
| 1025 DISALLOW_COPY_AND_ASSIGN(MockSSLClientSocket); | 1023 DISALLOW_COPY_AND_ASSIGN(MockSSLClientSocket); |
| 1026 }; | 1024 }; |
| 1027 | 1025 |
| 1028 class MockUDPClientSocket : public DatagramClientSocket, public AsyncSocket { | 1026 class MockUDPClientSocket : public DatagramClientSocket, public AsyncSocket { |
| 1029 public: | 1027 public: |
| 1030 MockUDPClientSocket(SocketDataProvider* data, net::NetLog* net_log); | 1028 MockUDPClientSocket(SocketDataProvider* data, net::NetLog* net_log); |
| 1031 virtual ~MockUDPClientSocket(); | 1029 ~MockUDPClientSocket() override; |
| 1032 | 1030 |
| 1033 // Socket implementation. | 1031 // Socket implementation. |
| 1034 virtual int Read(IOBuffer* buf, | 1032 int Read(IOBuffer* buf, |
| 1035 int buf_len, | 1033 int buf_len, |
| 1036 const CompletionCallback& callback) override; | 1034 const CompletionCallback& callback) override; |
| 1037 virtual int Write(IOBuffer* buf, | 1035 int Write(IOBuffer* buf, |
| 1038 int buf_len, | 1036 int buf_len, |
| 1039 const CompletionCallback& callback) override; | 1037 const CompletionCallback& callback) override; |
| 1040 virtual int SetReceiveBufferSize(int32 size) override; | 1038 int SetReceiveBufferSize(int32 size) override; |
| 1041 virtual int SetSendBufferSize(int32 size) override; | 1039 int SetSendBufferSize(int32 size) override; |
| 1042 | 1040 |
| 1043 // DatagramSocket implementation. | 1041 // DatagramSocket implementation. |
| 1044 virtual void Close() override; | 1042 void Close() override; |
| 1045 virtual int GetPeerAddress(IPEndPoint* address) const override; | 1043 int GetPeerAddress(IPEndPoint* address) const override; |
| 1046 virtual int GetLocalAddress(IPEndPoint* address) const override; | 1044 int GetLocalAddress(IPEndPoint* address) const override; |
| 1047 virtual const BoundNetLog& NetLog() const override; | 1045 const BoundNetLog& NetLog() const override; |
| 1048 | 1046 |
| 1049 // DatagramClientSocket implementation. | 1047 // DatagramClientSocket implementation. |
| 1050 virtual int Connect(const IPEndPoint& address) override; | 1048 int Connect(const IPEndPoint& address) override; |
| 1051 | 1049 |
| 1052 // AsyncSocket implementation. | 1050 // AsyncSocket implementation. |
| 1053 virtual void OnReadComplete(const MockRead& data) override; | 1051 void OnReadComplete(const MockRead& data) override; |
| 1054 virtual void OnConnectComplete(const MockConnect& data) override; | 1052 void OnConnectComplete(const MockConnect& data) override; |
| 1055 | 1053 |
| 1056 void set_source_port(int port) { source_port_ = port;} | 1054 void set_source_port(int port) { source_port_ = port;} |
| 1057 | 1055 |
| 1058 private: | 1056 private: |
| 1059 int CompleteRead(); | 1057 int CompleteRead(); |
| 1060 | 1058 |
| 1061 void RunCallbackAsync(const CompletionCallback& callback, int result); | 1059 void RunCallbackAsync(const CompletionCallback& callback, int result); |
| 1062 void RunCallback(const CompletionCallback& callback, int result); | 1060 void RunCallback(const CompletionCallback& callback, int result); |
| 1063 | 1061 |
| 1064 bool connected_; | 1062 bool connected_; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1080 | 1078 |
| 1081 base::WeakPtrFactory<MockUDPClientSocket> weak_factory_; | 1079 base::WeakPtrFactory<MockUDPClientSocket> weak_factory_; |
| 1082 | 1080 |
| 1083 DISALLOW_COPY_AND_ASSIGN(MockUDPClientSocket); | 1081 DISALLOW_COPY_AND_ASSIGN(MockUDPClientSocket); |
| 1084 }; | 1082 }; |
| 1085 | 1083 |
| 1086 class TestSocketRequest : public TestCompletionCallbackBase { | 1084 class TestSocketRequest : public TestCompletionCallbackBase { |
| 1087 public: | 1085 public: |
| 1088 TestSocketRequest(std::vector<TestSocketRequest*>* request_order, | 1086 TestSocketRequest(std::vector<TestSocketRequest*>* request_order, |
| 1089 size_t* completion_count); | 1087 size_t* completion_count); |
| 1090 virtual ~TestSocketRequest(); | 1088 ~TestSocketRequest() override; |
| 1091 | 1089 |
| 1092 ClientSocketHandle* handle() { return &handle_; } | 1090 ClientSocketHandle* handle() { return &handle_; } |
| 1093 | 1091 |
| 1094 const net::CompletionCallback& callback() const { return callback_; } | 1092 const net::CompletionCallback& callback() const { return callback_; } |
| 1095 | 1093 |
| 1096 private: | 1094 private: |
| 1097 void OnComplete(int result); | 1095 void OnComplete(int result); |
| 1098 | 1096 |
| 1099 ClientSocketHandle handle_; | 1097 ClientSocketHandle handle_; |
| 1100 std::vector<TestSocketRequest*>* request_order_; | 1098 std::vector<TestSocketRequest*>* request_order_; |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1200 CompletionCallback user_callback_; | 1198 CompletionCallback user_callback_; |
| 1201 | 1199 |
| 1202 DISALLOW_COPY_AND_ASSIGN(MockConnectJob); | 1200 DISALLOW_COPY_AND_ASSIGN(MockConnectJob); |
| 1203 }; | 1201 }; |
| 1204 | 1202 |
| 1205 MockTransportClientSocketPool(int max_sockets, | 1203 MockTransportClientSocketPool(int max_sockets, |
| 1206 int max_sockets_per_group, | 1204 int max_sockets_per_group, |
| 1207 ClientSocketPoolHistograms* histograms, | 1205 ClientSocketPoolHistograms* histograms, |
| 1208 ClientSocketFactory* socket_factory); | 1206 ClientSocketFactory* socket_factory); |
| 1209 | 1207 |
| 1210 virtual ~MockTransportClientSocketPool(); | 1208 ~MockTransportClientSocketPool() override; |
| 1211 | 1209 |
| 1212 RequestPriority last_request_priority() const { | 1210 RequestPriority last_request_priority() const { |
| 1213 return last_request_priority_; | 1211 return last_request_priority_; |
| 1214 } | 1212 } |
| 1215 int release_count() const { return release_count_; } | 1213 int release_count() const { return release_count_; } |
| 1216 int cancel_count() const { return cancel_count_; } | 1214 int cancel_count() const { return cancel_count_; } |
| 1217 | 1215 |
| 1218 // TransportClientSocketPool implementation. | 1216 // TransportClientSocketPool implementation. |
| 1219 virtual int RequestSocket(const std::string& group_name, | 1217 int RequestSocket(const std::string& group_name, |
| 1220 const void* socket_params, | 1218 const void* socket_params, |
| 1221 RequestPriority priority, | 1219 RequestPriority priority, |
| 1222 ClientSocketHandle* handle, | 1220 ClientSocketHandle* handle, |
| 1223 const CompletionCallback& callback, | 1221 const CompletionCallback& callback, |
| 1224 const BoundNetLog& net_log) override; | 1222 const BoundNetLog& net_log) override; |
| 1225 | 1223 |
| 1226 virtual void CancelRequest(const std::string& group_name, | 1224 void CancelRequest(const std::string& group_name, |
| 1227 ClientSocketHandle* handle) override; | 1225 ClientSocketHandle* handle) override; |
| 1228 virtual void ReleaseSocket(const std::string& group_name, | 1226 void ReleaseSocket(const std::string& group_name, |
| 1229 scoped_ptr<StreamSocket> socket, | 1227 scoped_ptr<StreamSocket> socket, |
| 1230 int id) override; | 1228 int id) override; |
| 1231 | 1229 |
| 1232 private: | 1230 private: |
| 1233 ClientSocketFactory* client_socket_factory_; | 1231 ClientSocketFactory* client_socket_factory_; |
| 1234 ScopedVector<MockConnectJob> job_list_; | 1232 ScopedVector<MockConnectJob> job_list_; |
| 1235 RequestPriority last_request_priority_; | 1233 RequestPriority last_request_priority_; |
| 1236 int release_count_; | 1234 int release_count_; |
| 1237 int cancel_count_; | 1235 int cancel_count_; |
| 1238 | 1236 |
| 1239 DISALLOW_COPY_AND_ASSIGN(MockTransportClientSocketPool); | 1237 DISALLOW_COPY_AND_ASSIGN(MockTransportClientSocketPool); |
| 1240 }; | 1238 }; |
| 1241 | 1239 |
| 1242 class DeterministicMockClientSocketFactory : public ClientSocketFactory { | 1240 class DeterministicMockClientSocketFactory : public ClientSocketFactory { |
| 1243 public: | 1241 public: |
| 1244 DeterministicMockClientSocketFactory(); | 1242 DeterministicMockClientSocketFactory(); |
| 1245 virtual ~DeterministicMockClientSocketFactory(); | 1243 ~DeterministicMockClientSocketFactory() override; |
| 1246 | 1244 |
| 1247 void AddSocketDataProvider(DeterministicSocketData* socket); | 1245 void AddSocketDataProvider(DeterministicSocketData* socket); |
| 1248 void AddSSLSocketDataProvider(SSLSocketDataProvider* socket); | 1246 void AddSSLSocketDataProvider(SSLSocketDataProvider* socket); |
| 1249 void ResetNextMockIndexes(); | 1247 void ResetNextMockIndexes(); |
| 1250 | 1248 |
| 1251 // Return |index|-th MockSSLClientSocket (starting from 0) that the factory | 1249 // Return |index|-th MockSSLClientSocket (starting from 0) that the factory |
| 1252 // created. | 1250 // created. |
| 1253 MockSSLClientSocket* GetMockSSLClientSocket(size_t index) const; | 1251 MockSSLClientSocket* GetMockSSLClientSocket(size_t index) const; |
| 1254 | 1252 |
| 1255 SocketDataProviderArray<DeterministicSocketData>& mock_data() { | 1253 SocketDataProviderArray<DeterministicSocketData>& mock_data() { |
| 1256 return mock_data_; | 1254 return mock_data_; |
| 1257 } | 1255 } |
| 1258 std::vector<DeterministicMockTCPClientSocket*>& tcp_client_sockets() { | 1256 std::vector<DeterministicMockTCPClientSocket*>& tcp_client_sockets() { |
| 1259 return tcp_client_sockets_; | 1257 return tcp_client_sockets_; |
| 1260 } | 1258 } |
| 1261 std::vector<DeterministicMockUDPClientSocket*>& udp_client_sockets() { | 1259 std::vector<DeterministicMockUDPClientSocket*>& udp_client_sockets() { |
| 1262 return udp_client_sockets_; | 1260 return udp_client_sockets_; |
| 1263 } | 1261 } |
| 1264 | 1262 |
| 1265 // ClientSocketFactory | 1263 // ClientSocketFactory |
| 1266 virtual scoped_ptr<DatagramClientSocket> CreateDatagramClientSocket( | 1264 scoped_ptr<DatagramClientSocket> CreateDatagramClientSocket( |
| 1267 DatagramSocket::BindType bind_type, | 1265 DatagramSocket::BindType bind_type, |
| 1268 const RandIntCallback& rand_int_cb, | 1266 const RandIntCallback& rand_int_cb, |
| 1269 NetLog* net_log, | 1267 NetLog* net_log, |
| 1270 const NetLog::Source& source) override; | 1268 const NetLog::Source& source) override; |
| 1271 virtual scoped_ptr<StreamSocket> CreateTransportClientSocket( | 1269 scoped_ptr<StreamSocket> CreateTransportClientSocket( |
| 1272 const AddressList& addresses, | 1270 const AddressList& addresses, |
| 1273 NetLog* net_log, | 1271 NetLog* net_log, |
| 1274 const NetLog::Source& source) override; | 1272 const NetLog::Source& source) override; |
| 1275 virtual scoped_ptr<SSLClientSocket> CreateSSLClientSocket( | 1273 scoped_ptr<SSLClientSocket> CreateSSLClientSocket( |
| 1276 scoped_ptr<ClientSocketHandle> transport_socket, | 1274 scoped_ptr<ClientSocketHandle> transport_socket, |
| 1277 const HostPortPair& host_and_port, | 1275 const HostPortPair& host_and_port, |
| 1278 const SSLConfig& ssl_config, | 1276 const SSLConfig& ssl_config, |
| 1279 const SSLClientSocketContext& context) override; | 1277 const SSLClientSocketContext& context) override; |
| 1280 virtual void ClearSSLSessionCache() override; | 1278 void ClearSSLSessionCache() override; |
| 1281 | 1279 |
| 1282 private: | 1280 private: |
| 1283 SocketDataProviderArray<DeterministicSocketData> mock_data_; | 1281 SocketDataProviderArray<DeterministicSocketData> mock_data_; |
| 1284 SocketDataProviderArray<SSLSocketDataProvider> mock_ssl_data_; | 1282 SocketDataProviderArray<SSLSocketDataProvider> mock_ssl_data_; |
| 1285 | 1283 |
| 1286 // Store pointers to handed out sockets in case the test wants to get them. | 1284 // Store pointers to handed out sockets in case the test wants to get them. |
| 1287 std::vector<DeterministicMockTCPClientSocket*> tcp_client_sockets_; | 1285 std::vector<DeterministicMockTCPClientSocket*> tcp_client_sockets_; |
| 1288 std::vector<DeterministicMockUDPClientSocket*> udp_client_sockets_; | 1286 std::vector<DeterministicMockUDPClientSocket*> udp_client_sockets_; |
| 1289 std::vector<MockSSLClientSocket*> ssl_client_sockets_; | 1287 std::vector<MockSSLClientSocket*> ssl_client_sockets_; |
| 1290 | 1288 |
| 1291 DISALLOW_COPY_AND_ASSIGN(DeterministicMockClientSocketFactory); | 1289 DISALLOW_COPY_AND_ASSIGN(DeterministicMockClientSocketFactory); |
| 1292 }; | 1290 }; |
| 1293 | 1291 |
| 1294 class MockSOCKSClientSocketPool : public SOCKSClientSocketPool { | 1292 class MockSOCKSClientSocketPool : public SOCKSClientSocketPool { |
| 1295 public: | 1293 public: |
| 1296 MockSOCKSClientSocketPool(int max_sockets, | 1294 MockSOCKSClientSocketPool(int max_sockets, |
| 1297 int max_sockets_per_group, | 1295 int max_sockets_per_group, |
| 1298 ClientSocketPoolHistograms* histograms, | 1296 ClientSocketPoolHistograms* histograms, |
| 1299 TransportClientSocketPool* transport_pool); | 1297 TransportClientSocketPool* transport_pool); |
| 1300 | 1298 |
| 1301 virtual ~MockSOCKSClientSocketPool(); | 1299 ~MockSOCKSClientSocketPool() override; |
| 1302 | 1300 |
| 1303 // SOCKSClientSocketPool implementation. | 1301 // SOCKSClientSocketPool implementation. |
| 1304 virtual int RequestSocket(const std::string& group_name, | 1302 int RequestSocket(const std::string& group_name, |
| 1305 const void* socket_params, | 1303 const void* socket_params, |
| 1306 RequestPriority priority, | 1304 RequestPriority priority, |
| 1307 ClientSocketHandle* handle, | 1305 ClientSocketHandle* handle, |
| 1308 const CompletionCallback& callback, | 1306 const CompletionCallback& callback, |
| 1309 const BoundNetLog& net_log) override; | 1307 const BoundNetLog& net_log) override; |
| 1310 | 1308 |
| 1311 virtual void CancelRequest(const std::string& group_name, | 1309 void CancelRequest(const std::string& group_name, |
| 1312 ClientSocketHandle* handle) override; | 1310 ClientSocketHandle* handle) override; |
| 1313 virtual void ReleaseSocket(const std::string& group_name, | 1311 void ReleaseSocket(const std::string& group_name, |
| 1314 scoped_ptr<StreamSocket> socket, | 1312 scoped_ptr<StreamSocket> socket, |
| 1315 int id) override; | 1313 int id) override; |
| 1316 | 1314 |
| 1317 private: | 1315 private: |
| 1318 TransportClientSocketPool* const transport_pool_; | 1316 TransportClientSocketPool* const transport_pool_; |
| 1319 | 1317 |
| 1320 DISALLOW_COPY_AND_ASSIGN(MockSOCKSClientSocketPool); | 1318 DISALLOW_COPY_AND_ASSIGN(MockSOCKSClientSocketPool); |
| 1321 }; | 1319 }; |
| 1322 | 1320 |
| 1323 // Constants for a successful SOCKS v5 handshake. | 1321 // Constants for a successful SOCKS v5 handshake. |
| 1324 extern const char kSOCKS5GreetRequest[]; | 1322 extern const char kSOCKS5GreetRequest[]; |
| 1325 extern const int kSOCKS5GreetRequestLength; | 1323 extern const int kSOCKS5GreetRequestLength; |
| 1326 | 1324 |
| 1327 extern const char kSOCKS5GreetResponse[]; | 1325 extern const char kSOCKS5GreetResponse[]; |
| 1328 extern const int kSOCKS5GreetResponseLength; | 1326 extern const int kSOCKS5GreetResponseLength; |
| 1329 | 1327 |
| 1330 extern const char kSOCKS5OkRequest[]; | 1328 extern const char kSOCKS5OkRequest[]; |
| 1331 extern const int kSOCKS5OkRequestLength; | 1329 extern const int kSOCKS5OkRequestLength; |
| 1332 | 1330 |
| 1333 extern const char kSOCKS5OkResponse[]; | 1331 extern const char kSOCKS5OkResponse[]; |
| 1334 extern const int kSOCKS5OkResponseLength; | 1332 extern const int kSOCKS5OkResponseLength; |
| 1335 | 1333 |
| 1336 } // namespace net | 1334 } // namespace net |
| 1337 | 1335 |
| 1338 #endif // NET_SOCKET_SOCKET_TEST_UTIL_H_ | 1336 #endif // NET_SOCKET_SOCKET_TEST_UTIL_H_ |
| OLD | NEW |