Index: net/http/http_network_transaction_unittest.cc |
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc |
index 09919406616830dae1f7790e2fc6f618ca2b169f..518d07cb770e4b5667fa7714aa79a3d501aac757 100644 |
--- a/net/http/http_network_transaction_unittest.cc |
+++ b/net/http/http_network_transaction_unittest.cc |
@@ -10132,35 +10132,47 @@ TEST_P(HttpNetworkTransactionTest, GenerateAuthToken) { |
scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
+ SSLSocketDataProvider ssl_socket_data_provider(SYNCHRONOUS, OK); |
+ |
+ std::vector<std::vector<MockRead>> mock_reads(1); |
+ std::vector<std::vector<MockWrite>> mock_writes(1); |
for (int round = 0; round < test_config.num_auth_rounds; ++round) { |
const TestRound& read_write_round = test_config.rounds[round]; |
// Set up expected reads and writes. |
- MockRead reads[2]; |
- reads[0] = read_write_round.read; |
- size_t length_reads = 1; |
- if (read_write_round.extra_read) { |
- reads[1] = *read_write_round.extra_read; |
- length_reads = 2; |
+ mock_reads.back().push_back(read_write_round.read); |
+ mock_writes.back().push_back(read_write_round.write); |
+ |
+ if (read_write_round.read.data == kProxyChallenge.data && |
cbentzel
2015/05/21 00:10:25
This isn't immediately obvious to me what is going
cbentzel
2015/05/21 00:22:04
Ah - I'm guessing this is due to Proxy-Connection:
Ryan Hamilton
2015/05/21 02:31:24
You got it. Added a comment. (Good idea)
Ryan Hamilton
2015/05/21 02:31:24
So kProxyChallenge has Proxy-Connection: close whi
cbentzel
2015/05/21 10:10:05
I don't know why off the top of my head. This is w
|
+ read_write_round.write.data != kConnect.data) { |
+ mock_reads.push_back(std::vector<MockRead>()); |
+ mock_writes.push_back(std::vector<MockWrite>()); |
} |
- MockWrite writes[2]; |
- writes[0] = read_write_round.write; |
- size_t length_writes = 1; |
+ if (read_write_round.extra_read) { |
cbentzel
2015/05/21 00:22:04
It doesn't look like there is ever a case where a
Ryan Hamilton
2015/05/21 02:31:24
I *think* it's correct as is, because if there was
cbentzel
2015/05/21 10:10:05
This seems reasonable.
|
+ mock_reads.back().push_back(*read_write_round.extra_read); |
+ } |
if (read_write_round.extra_write) { |
- writes[1] = *read_write_round.extra_write; |
- length_writes = 2; |
+ mock_writes.back().push_back(*read_write_round.extra_write); |
} |
- StaticSocketDataProvider data_provider( |
- reads, length_reads, writes, length_writes); |
- session_deps_.socket_factory->AddSocketDataProvider(&data_provider); |
cbentzel
2015/05/21 00:10:25
Wow, I'm really surprised this worked.
Here's wh
Ryan Hamilton
2015/05/21 02:31:24
Yeah, you got it exactly right!
I don't think we
|
// Add an SSL sequence if necessary. |
- SSLSocketDataProvider ssl_socket_data_provider(SYNCHRONOUS, OK); |
if (round >= test_config.first_ssl_round) |
session_deps_.socket_factory->AddSSLSocketDataProvider( |
&ssl_socket_data_provider); |
+ } |
+ |
+ std::vector<StaticSocketDataProvider*> data_providers; |
cbentzel
2015/05/21 00:10:25
Would ScopedVector<StaticSocketDataProvider> work
Ryan Hamilton
2015/05/21 02:31:24
Ooo! nice!
|
+ for (size_t i = 0; i < mock_reads.size(); ++i) { |
+ data_providers.push_back(new StaticSocketDataProvider( |
+ vector_as_array(&mock_reads[i]), mock_reads[i].size(), |
+ vector_as_array(&mock_writes[i]), mock_writes[i].size())); |
+ session_deps_.socket_factory->AddSocketDataProvider( |
+ data_providers.back()); |
+ } |
+ for (int round = 0; round < test_config.num_auth_rounds; ++round) { |
+ const TestRound& read_write_round = test_config.rounds[round]; |
// Start or restart the transaction. |
TestCompletionCallback callback; |
int rv; |
@@ -10186,6 +10198,7 @@ TEST_P(HttpNetworkTransactionTest, GenerateAuthToken) { |
EXPECT_TRUE(response->auth_challenge.get() == NULL); |
} |
} |
+ STLDeleteElements(&data_providers); |
} |
} |