| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/url_request/url_request_http_job.h" | 5 #include "net/url_request/url_request_http_job.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <cstddef> | 9 #include <cstddef> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 641 | 641 |
| 642 struct TestCase { | 642 struct TestCase { |
| 643 const char* url; | 643 const char* url; |
| 644 bool upgrade_expected; | 644 bool upgrade_expected; |
| 645 const char* url_expected; | 645 const char* url_expected; |
| 646 } cases[] = { | 646 } cases[] = { |
| 647 {"http://upgrade.test/", true, "https://upgrade.test/"}, | 647 {"http://upgrade.test/", true, "https://upgrade.test/"}, |
| 648 {"http://upgrade.test:123/", true, "https://upgrade.test:123/"}, | 648 {"http://upgrade.test:123/", true, "https://upgrade.test:123/"}, |
| 649 {"http://no-upgrade.test/", false, "http://no-upgrade.test/"}, | 649 {"http://no-upgrade.test/", false, "http://no-upgrade.test/"}, |
| 650 {"http://no-upgrade.test:123/", false, "http://no-upgrade.test:123/"}, | 650 {"http://no-upgrade.test:123/", false, "http://no-upgrade.test:123/"}, |
| 651 // iOS doesn't support websockets; see the comments above | 651 #if defined(ENABLE_WEBSOCKETS) |
| 652 // URLRequestHttpJobWebSocketTest for detail. | |
| 653 #if !defined(OS_IOS) | |
| 654 {"ws://upgrade.test/", true, "wss://upgrade.test/"}, | 652 {"ws://upgrade.test/", true, "wss://upgrade.test/"}, |
| 655 {"ws://upgrade.test:123/", true, "wss://upgrade.test:123/"}, | 653 {"ws://upgrade.test:123/", true, "wss://upgrade.test:123/"}, |
| 656 {"ws://no-upgrade.test/", false, "ws://no-upgrade.test/"}, | 654 {"ws://no-upgrade.test/", false, "ws://no-upgrade.test/"}, |
| 657 {"ws://no-upgrade.test:123/", false, "ws://no-upgrade.test:123/"}, | 655 {"ws://no-upgrade.test:123/", false, "ws://no-upgrade.test:123/"}, |
| 658 #endif // !defined(OS_IOS) | 656 #endif // defined(ENABLE_WEBSOCKETS) |
| 659 }; | 657 }; |
| 660 | 658 |
| 661 for (const auto& test : cases) { | 659 for (const auto& test : cases) { |
| 662 SCOPED_TRACE(test.url); | 660 SCOPED_TRACE(test.url); |
| 663 TestDelegate d; | 661 TestDelegate d; |
| 664 TestNetworkDelegate network_delegate; | 662 TestNetworkDelegate network_delegate; |
| 665 std::unique_ptr<URLRequest> r( | 663 std::unique_ptr<URLRequest> r( |
| 666 context_.CreateRequest(GURL(test.url), DEFAULT_PRIORITY, &d)); | 664 context_.CreateRequest(GURL(test.url), DEFAULT_PRIORITY, &d)); |
| 667 | 665 |
| 668 net_log_.Clear(); | 666 net_log_.Clear(); |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 889 } | 887 } |
| 890 | 888 |
| 891 MOCK_METHOD0(CreateBasicStreamMock, | 889 MOCK_METHOD0(CreateBasicStreamMock, |
| 892 WebSocketHandshakeStreamBase*()); | 890 WebSocketHandshakeStreamBase*()); |
| 893 | 891 |
| 894 MOCK_METHOD2(CreateSpdyStream, | 892 MOCK_METHOD2(CreateSpdyStream, |
| 895 WebSocketHandshakeStreamBase*(const base::WeakPtr<SpdySession>&, | 893 WebSocketHandshakeStreamBase*(const base::WeakPtr<SpdySession>&, |
| 896 bool)); | 894 bool)); |
| 897 }; | 895 }; |
| 898 | 896 |
| 899 // iOS doesn't support WebSockets, so these tests fail with ERR_UNKOWN_SCHEME on | 897 #if defined(ENABLE_WEBSOCKETS) |
| 900 // iOS. | |
| 901 // TODO(mmenke): Hard coding features based on OS is regression prone and ugly. | |
| 902 // Seems like this should use a build flag instead. | |
| 903 #if !defined(OS_IOS) | |
| 904 | 898 |
| 905 class FakeWebSocketHandshakeStream : public WebSocketHandshakeStreamBase { | 899 class FakeWebSocketHandshakeStream : public WebSocketHandshakeStreamBase { |
| 906 public: | 900 public: |
| 907 FakeWebSocketHandshakeStream() : initialize_stream_was_called_(false) {} | 901 FakeWebSocketHandshakeStream() : initialize_stream_was_called_(false) {} |
| 908 | 902 |
| 909 bool initialize_stream_was_called() const { | 903 bool initialize_stream_was_called() const { |
| 910 return initialize_stream_was_called_; | 904 return initialize_stream_was_called_; |
| 911 } | 905 } |
| 912 | 906 |
| 913 // Fake implementation of HttpStreamBase methods. | 907 // Fake implementation of HttpStreamBase methods. |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1002 .WillOnce(Return(fake_handshake_stream)); | 996 .WillOnce(Return(fake_handshake_stream)); |
| 1003 req_->SetUserData(WebSocketHandshakeStreamBase::CreateHelper::DataKey(), | 997 req_->SetUserData(WebSocketHandshakeStreamBase::CreateHelper::DataKey(), |
| 1004 create_helper.release()); | 998 create_helper.release()); |
| 1005 req_->SetLoadFlags(LOAD_DISABLE_CACHE); | 999 req_->SetLoadFlags(LOAD_DISABLE_CACHE); |
| 1006 req_->Start(); | 1000 req_->Start(); |
| 1007 base::RunLoop().RunUntilIdle(); | 1001 base::RunLoop().RunUntilIdle(); |
| 1008 EXPECT_EQ(URLRequestStatus::IO_PENDING, req_->status().status()); | 1002 EXPECT_EQ(URLRequestStatus::IO_PENDING, req_->status().status()); |
| 1009 EXPECT_TRUE(fake_handshake_stream->initialize_stream_was_called()); | 1003 EXPECT_TRUE(fake_handshake_stream->initialize_stream_was_called()); |
| 1010 } | 1004 } |
| 1011 | 1005 |
| 1012 #endif // !defined(OS_IOS) | 1006 #endif // defined(ENABLE_WEBSOCKETS) |
| 1013 | 1007 |
| 1014 } // namespace | 1008 } // namespace |
| 1015 | 1009 |
| 1016 } // namespace net | 1010 } // namespace net |
| OLD | NEW |