Index: net/spdy/spdy_framer_test.cc |
diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc |
index d33a7793bd4cc2995da1ea582e4b80687b38fa85..eee3cbcbdcb9ebad57341565ba9b32318bfeb26a 100644 |
--- a/net/spdy/spdy_framer_test.cc |
+++ b/net/spdy/spdy_framer_test.cc |
@@ -1647,6 +1647,47 @@ TEST_P(SpdyFramerTest, CreateDataFrame) { |
} |
{ |
+ const char kDescription[] = |
+ "'hello' data frame with 1 byte padding, no FIN"; |
+ const unsigned char kV3FrameData[] = { // Also applies for V2. |
+ 0x00, 0x00, 0x00, 0x01, |
+ 0x00, 0x00, 0x00, 0x05, |
+ 'h', 'e', 'l', 'l', |
+ 'o' |
+ }; |
+ |
+ const unsigned char kV4FrameData[] = { |
+ 0x00, 0x06, 0x00, 0x10, // Length = 6. PAD_LOW set. |
+ 0x00, 0x00, 0x00, 0x01, |
+ 0x00, // Pad Low field. |
+ 'h', 'e', 'l', 'l', // Data |
+ 'o', |
+ }; |
+ const char bytes[] = "hello"; |
+ |
+ SpdyDataIR data_ir(1, StringPiece(bytes, strlen(bytes))); |
+ // The pad low field itself is used for the 1-byte padding and no padding |
+ // payload is needed. |
+ data_ir.set_padding_len(1); |
+ scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
+ if (IsSpdy4()) { |
+ CompareFrame( |
+ kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
+ } else { |
+ CompareFrame( |
+ kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
+ } |
+ |
+ frame.reset(framer.SerializeDataFrameHeaderWithPaddingLengthField(data_ir)); |
+ CompareCharArraysWithHexError( |
+ kDescription, |
+ reinterpret_cast<const unsigned char*>(frame->data()), |
+ framer.GetDataFrameMinimumSize(), |
+ IsSpdy4() ? kV4FrameData : kV3FrameData, |
+ framer.GetDataFrameMinimumSize()); |
+ } |
+ |
+ { |
const char kDescription[] = "Data frame with negative data byte, no FIN"; |
const unsigned char kV3FrameData[] = { // Also applies for V2. |
0x00, 0x00, 0x00, 0x01, |