Land Recent QUIC Changes

Remove a LOG_IF(DFATAL) for retransmitting packets which were never
given a sent time.

This DCHECK was firing on Chrome when Windows buffered a packet and
before the callback for the packet being sent, Chrome received a server
reject and had to change crypto context and retransmit all unacked
packets.

Merge internal change: 63686840
https://codereview.chromium.org/214413009/


Rename of QUIC flow control member variables to be more explicit (prefix
flow_control) and more descriptive ("max" instead of "initial").

Merge internal change: 63599012
https://codereview.chromium.org/215423003/


Change comment in QuicSessionTest to be more accurate, and add another
expectation to ensure stream is not flow control blocked before sending
any data.

Merge internal change: 63604321

Fixed compilation warnings in quic_sent_packet_manager_test.cc.

https://codereview.chromium.org/214823010/


Added UseWriter changes to QuicTestClient while porting internal
code that handles the client side of unwinding UDP proxied QUIC changes.

Merge internal change: 63542972
https://codereview.chromium.org/214083003/


Change to QUIC's SendAlgorithmInterface to remove IsHandshake from
TimeUntilSend.

Changed QuicSentPacketManager to ensure it always retransmitted crypto
handshake packets before other retransmissions.

Merge internal change: 63540663
https://codereview.chromium.org/214923003/


Removing TransmissionType from QUIC's TimeUntilSend method.

The only real user was was TcpCubicSender for tail loss probe, and TLP
is better fully contained within the SentPacketManager.

Merge internal change: 63501475
https://codereview.chromium.org/214083002/


Removed unnecessary transmission_type from Quic's send algorithm
interface.

The few remaining uses were improper, so there is a minor change in
behavior.

Merge internal change: 63480011
https://codereview.chromium.org/211693004/


Introduce QUIC_VERSION_17: per-stream flow control. Default send window
is 16 KB, and the client/server can specify higher values in their
CHLO/SHLO messages. WINDOW_UPDATE frames are sent when the receiver has
consumed more than half of their receive window (behavior copied from
SPDY), and BLOCKED frames are sent if a write is attempted while flow
control blocked.

Protected behind FLAGS_enable_quic_stream_flow_control.

Merge internal change: 63474251
https://codereview.chromium.org/211743005/


Adding an accessor to quic dispatcher.

Merge internal change: 63470311
https://codereview.chromium.org/208273008/

[email protected]

Review URL: https://codereview.chromium.org/215663002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@260637 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/quic/test_tools/quic_test_utils.cc b/net/quic/test_tools/quic_test_utils.cc
index 7d24b2f..fbba004 100644
--- a/net/quic/test_tools/quic_test_utils.cc
+++ b/net/quic/test_tools/quic_test_utils.cc
@@ -270,7 +270,8 @@
                      IPEndPoint(TestPeerIPAddress(), kTestPort),
                      new testing::NiceMock<MockHelper>(),
                      new testing::NiceMock<MockPacketWriter>(),
-                     is_server, QuicSupportedVersions()),
+                     is_server, QuicSupportedVersions(),
+                     kInitialFlowControlWindowForTest),
       writer_(QuicConnectionPeer::GetWriter(this)),
       helper_(helper()) {
 }
@@ -280,7 +281,8 @@
     : QuicConnection(kTestConnectionId, address,
                      new testing::NiceMock<MockHelper>(),
                      new testing::NiceMock<MockPacketWriter>(),
-                     is_server, QuicSupportedVersions()),
+                     is_server, QuicSupportedVersions(),
+                     kInitialFlowControlWindowForTest),
       writer_(QuicConnectionPeer::GetWriter(this)),
       helper_(helper()) {
 }
@@ -291,7 +293,8 @@
                      IPEndPoint(TestPeerIPAddress(), kTestPort),
                      new testing::NiceMock<MockHelper>(),
                      new testing::NiceMock<MockPacketWriter>(),
-                     is_server, QuicSupportedVersions()),
+                     is_server, QuicSupportedVersions(),
+                     kInitialFlowControlWindowForTest),
       writer_(QuicConnectionPeer::GetWriter(this)),
       helper_(helper()) {
 }
@@ -302,7 +305,8 @@
                      IPEndPoint(TestPeerIPAddress(), kTestPort),
                      new testing::NiceMock<MockHelper>(),
                      new testing::NiceMock<MockPacketWriter>(),
-                     is_server, supported_versions),
+                     is_server, supported_versions,
+                     kInitialFlowControlWindowForTest),
       writer_(QuicConnectionPeer::GetWriter(this)),
       helper_(helper()) {
 }
@@ -459,6 +463,14 @@
   return addr;
 }
 
+void GenerateBody(string* body, int length) {
+  body->clear();
+  body->reserve(length);
+  for (int i = 0; i < length; ++i) {
+    body->append(1, static_cast<char>(32 + i % (126 - 32)));
+  }
+}
+
 QuicEncryptedPacket* ConstructEncryptedPacket(
     QuicConnectionId connection_id,
     bool version_flag,