Index: net/quic/test_tools/crypto_test_utils.cc |
diff --git a/net/quic/test_tools/crypto_test_utils.cc b/net/quic/test_tools/crypto_test_utils.cc |
index d469bfa756af3ba3adff5ba58e7e0939dd533b89..4c8b67d5c06642cdb67607fd0c4de9bfe46f0347 100644 |
--- a/net/quic/test_tools/crypto_test_utils.cc |
+++ b/net/quic/test_tools/crypto_test_utils.cc |
@@ -444,6 +444,19 @@ CryptoHandshakeMessage CryptoTestUtils::BuildMessage(const char* message_tag, |
break; |
} |
+ if (tagstr[0] == '$') { |
+ // Special value. |
+ const char* const special = tagstr + 1; |
+ if (strcmp(special, "padding") == 0) { |
+ const int min_bytes = va_arg(ap, int); |
+ msg.set_minimum_size(min_bytes); |
+ } else { |
+ CHECK(false) << "Unknown special value: " << special; |
+ } |
+ |
+ continue; |
+ } |
+ |
const QuicTag tag = ParseTag(tagstr); |
const char* valuestr = va_arg(ap, const char*); |
@@ -471,7 +484,14 @@ CryptoHandshakeMessage CryptoTestUtils::BuildMessage(const char* message_tag, |
msg.SetStringPiece(tag, valuestr); |
} |
- return msg; |
+ // The CryptoHandshakeMessage needs to be serialized and parsed to ensure |
+ // that any padding is included. |
+ scoped_ptr<QuicData> bytes(CryptoFramer::ConstructHandshakeMessage(msg)); |
+ scoped_ptr<CryptoHandshakeMessage> parsed( |
+ CryptoFramer::ParseMessage(bytes->AsStringPiece())); |
+ CHECK(parsed.get()); |
+ |
+ return *parsed; |
} |
} // namespace test |