Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: net/spdy/spdy_framer_test.cc

Issue 21820003: DO NOT COMMIT: SPDY 4: Hack SpdyFramer to turn SYN_STREAM and SYN_REPLY into HEADERS semi-transpare… Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase for draft 06 Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/spdy/spdy_framer.cc ('k') | net/spdy/spdy_protocol.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <algorithm> 5 #include <algorithm>
6 #include <iostream> 6 #include <iostream>
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 994 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 } 1005 }
1006 } 1006 }
1007 1007
1008 TEST_P(SpdyFramerTest, DuplicateHeader) { 1008 TEST_P(SpdyFramerTest, DuplicateHeader) {
1009 SpdyFramer framer(spdy_version_); 1009 SpdyFramer framer(spdy_version_);
1010 // Frame builder with plentiful buffer size. 1010 // Frame builder with plentiful buffer size.
1011 SpdyFrameBuilder frame(1024); 1011 SpdyFrameBuilder frame(1024);
1012 if (spdy_version_ < 4) { 1012 if (spdy_version_ < 4) {
1013 frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE); 1013 frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE);
1014 frame.WriteUInt32(3); // stream_id 1014 frame.WriteUInt32(3); // stream_id
1015 frame.WriteUInt32(0); // associated stream id
1016 frame.WriteUInt16(0); // Priority.
1015 } else { 1017 } else {
1016 frame.WriteFramePrefix(framer, SYN_STREAM, CONTROL_FLAG_NONE, 3); 1018 frame.WriteFramePrefix(framer, HEADERS, HEADERS_FLAG_PRIORITY, 3);
1019 frame.WriteUInt32(framer.GetHighestPriority());
1017 } 1020 }
1018 1021
1019 frame.WriteUInt32(0); // associated stream id
1020 frame.WriteUInt16(0); // Priority.
1021
1022 if (IsSpdy2()) { 1022 if (IsSpdy2()) {
1023 frame.WriteUInt16(2); // Number of headers. 1023 frame.WriteUInt16(2); // Number of headers.
1024 frame.WriteString("name"); 1024 frame.WriteString("name");
1025 frame.WriteString("value1"); 1025 frame.WriteString("value1");
1026 frame.WriteString("name"); 1026 frame.WriteString("name");
1027 frame.WriteString("value2"); 1027 frame.WriteString("value2");
1028 } else { 1028 } else {
1029 frame.WriteUInt32(2); // Number of headers. 1029 frame.WriteUInt32(2); // Number of headers.
1030 frame.WriteStringPiece32("name"); 1030 frame.WriteStringPiece32("name");
1031 frame.WriteStringPiece32("value1"); 1031 frame.WriteStringPiece32("value1");
(...skipping 14 matching lines...) Expand all
1046 &new_headers)); 1046 &new_headers));
1047 } 1047 }
1048 1048
1049 TEST_P(SpdyFramerTest, MultiValueHeader) { 1049 TEST_P(SpdyFramerTest, MultiValueHeader) {
1050 SpdyFramer framer(spdy_version_); 1050 SpdyFramer framer(spdy_version_);
1051 // Frame builder with plentiful buffer size. 1051 // Frame builder with plentiful buffer size.
1052 SpdyFrameBuilder frame(1024); 1052 SpdyFrameBuilder frame(1024);
1053 if (spdy_version_ < 4) { 1053 if (spdy_version_ < 4) {
1054 frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE); 1054 frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE);
1055 frame.WriteUInt32(3); // stream_id 1055 frame.WriteUInt32(3); // stream_id
1056 frame.WriteUInt32(0); // associated stream id
1057 frame.WriteUInt16(0); // Priority.
1056 } else { 1058 } else {
1057 frame.WriteFramePrefix(framer, SYN_STREAM, CONTROL_FLAG_NONE, 3); 1059 frame.WriteFramePrefix(framer, HEADERS, HEADERS_FLAG_PRIORITY, 3);
1060 frame.WriteUInt32(framer.GetHighestPriority());
1058 } 1061 }
1059 1062
1060 frame.WriteUInt32(0); // associated stream id
1061 frame.WriteUInt16(0); // Priority.
1062
1063 string value("value1\0value2"); 1063 string value("value1\0value2");
1064 if (IsSpdy2()) { 1064 if (IsSpdy2()) {
1065 frame.WriteUInt16(1); // Number of headers. 1065 frame.WriteUInt16(1); // Number of headers.
1066 frame.WriteString("name"); 1066 frame.WriteString("name");
1067 frame.WriteString(value); 1067 frame.WriteString(value);
1068 } else { 1068 } else {
1069 frame.WriteUInt32(1); // Number of headers. 1069 frame.WriteUInt32(1); // Number of headers.
1070 frame.WriteStringPiece32("name"); 1070 frame.WriteStringPiece32("name");
1071 frame.WriteStringPiece32(value); 1071 frame.WriteStringPiece32(value);
1072 } 1072 }
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
1318 0x00, 0x00, 0x00, 0x03, // DATA on Stream #3 1318 0x00, 0x00, 0x00, 0x03, // DATA on Stream #3
1319 0x00, 0x00, 0x00, 0x00, 1319 0x00, 0x00, 0x00, 0x00,
1320 1320
1321 0x80, spdy_version_ch_, 0x00, 0x03, // RST_STREAM on Stream #3 1321 0x80, spdy_version_ch_, 0x00, 0x03, // RST_STREAM on Stream #3
1322 0x00, 0x00, 0x00, 0x08, 1322 0x00, 0x00, 0x00, 0x08,
1323 0x00, 0x00, 0x00, 0x03, 1323 0x00, 0x00, 0x00, 0x03,
1324 0x00, 0x00, 0x00, 0x00, 1324 0x00, 0x00, 0x00, 0x00,
1325 }; 1325 };
1326 1326
1327 const unsigned char kV4Input[] = { 1327 const unsigned char kV4Input[] = {
1328 0x00, 0x1e, 0x01, 0x00, // SYN_STREAM #1 1328 0x00, 0x1c, 0x08, 0x08, // SYN_STREAM #1
1329 0x00, 0x00, 0x00, 0x01, 1329 0x00, 0x00, 0x00, 0x01,
1330 0x00, 0x00, 0x00, 0x00, 1330 0x00, 0x00, 0x00, 0x00,
1331 0x00, 0x00, 0x00, 0x00, 1331 0x00, 0x00, 0x00, 0x01,
1332 0x00, 0x01, 0x00, 0x00,
1333 0x00, 0x02, 'h', 'h',
1334 0x00, 0x00, 0x00, 0x02, 1332 0x00, 0x00, 0x00, 0x02,
1335 'v', 'v', 1333 'h', 'h', 0x00, 0x00,
1334 0x00, 0x02, 'v', 'v',
1336 1335
1337 0x00, 0x24, 0x08, 0x00, // HEADERS on Stream #1 1336 0x00, 0x24, 0x08, 0x00, // HEADERS on Stream #1
1338 0x00, 0x00, 0x00, 0x01, 1337 0x00, 0x00, 0x00, 0x01,
1339 0x00, 0x00, 0x00, 0x02, 1338 0x00, 0x00, 0x00, 0x02,
1340 0x00, 0x00, 0x00, 0x02, 1339 0x00, 0x00, 0x00, 0x02,
1341 'h', '2', 0x00, 0x00, 1340 'h', '2', 0x00, 0x00,
1342 0x00, 0x02, 'v', '2', 1341 0x00, 0x02, 'v', '2',
1343 0x00, 0x00, 0x00, 0x02, 1342 0x00, 0x00, 0x00, 0x02,
1344 'h', '3', 0x00, 0x00, 1343 'h', '3', 0x00, 0x00,
1345 0x00, 0x02, 'v', '3', 1344 0x00, 0x02, 'v', '3',
1346 1345
1347 0x00, 0x14, 0x00, 0x00, // DATA on Stream #1 1346 0x00, 0x14, 0x00, 0x00, // DATA on Stream #1
1348 0x00, 0x00, 0x00, 0x01, 1347 0x00, 0x00, 0x00, 0x01,
1349 0xde, 0xad, 0xbe, 0xef, 1348 0xde, 0xad, 0xbe, 0xef,
1350 0xde, 0xad, 0xbe, 0xef, 1349 0xde, 0xad, 0xbe, 0xef,
1351 0xde, 0xad, 0xbe, 0xef, 1350 0xde, 0xad, 0xbe, 0xef,
1352 1351
1353 0x00, 0x12, 0x01, 0x00, // SYN Stream #3 1352 0x00, 0x10, 0x08, 0x08, // SYN Stream #3
1354 0x00, 0x00, 0x00, 0x03, 1353 0x00, 0x00, 0x00, 0x03,
1355 0x00, 0x00, 0x00, 0x00, 1354 0x00, 0x00, 0x00, 0x00,
1356 0x00, 0x00, 0x00, 0x00, 1355 0x00, 0x00, 0x00, 0x00,
1357 0x00, 0x00,
1358 1356
1359 0x00, 0x10, 0x00, 0x00, // DATA on Stream #3 1357 0x00, 0x10, 0x00, 0x00, // DATA on Stream #3
1360 0x00, 0x00, 0x00, 0x03, 1358 0x00, 0x00, 0x00, 0x03,
1361 0xde, 0xad, 0xbe, 0xef, 1359 0xde, 0xad, 0xbe, 0xef,
1362 0xde, 0xad, 0xbe, 0xef, 1360 0xde, 0xad, 0xbe, 0xef,
1363 1361
1364 0x00, 0x0c, 0x00, 0x00, // DATA on Stream #1 1362 0x00, 0x0c, 0x00, 0x00, // DATA on Stream #1
1365 0x00, 0x00, 0x00, 0x01, 1363 0x00, 0x00, 0x00, 0x01,
1366 0xde, 0xad, 0xbe, 0xef, 1364 0xde, 0xad, 0xbe, 0xef,
1367 1365
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1448 0x00, 0x00, 0x00, 0x0c, 1446 0x00, 0x00, 0x00, 0x0c,
1449 0xde, 0xad, 0xbe, 0xef, 1447 0xde, 0xad, 0xbe, 0xef,
1450 0xde, 0xad, 0xbe, 0xef, 1448 0xde, 0xad, 0xbe, 0xef,
1451 0xde, 0xad, 0xbe, 0xef, 1449 0xde, 0xad, 0xbe, 0xef,
1452 1450
1453 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1, with EOF 1451 0x00, 0x00, 0x00, 0x01, // DATA on Stream #1, with EOF
1454 0x01, 0x00, 0x00, 0x04, 1452 0x01, 0x00, 0x00, 0x04,
1455 0xde, 0xad, 0xbe, 0xef, 1453 0xde, 0xad, 0xbe, 0xef,
1456 }; 1454 };
1457 const unsigned char kV4Input[] = { 1455 const unsigned char kV4Input[] = {
1458 0x00, 0x1e, 0x01, 0x00, // SYN_STREAM #1 1456 0x00, 0x1c, 0x08, 0x08, // SYN_STREAM #1
1459 0x00, 0x00, 0x00, 0x01, 1457 0x00, 0x00, 0x00, 0x01,
1460 0x00, 0x00, 0x00, 0x00, 1458 0x00, 0x00, 0x00, 0x00,
1461 0x00, 0x00, 0x00, 0x00, 1459 0x00, 0x00, 0x00, 0x01,
1462 0x00, 0x01, 0x00, 0x00,
1463 0x00, 0x02, 'h', 'h',
1464 0x00, 0x00, 0x00, 0x02, 1460 0x00, 0x00, 0x00, 0x02,
1465 'v', 'v', 1461 'h', 'h', 0x00, 0x00,
1462 0x00, 0x02, 'v', 'v',
1466 1463
1467 0x00, 0x18, 0x02, 0x00, // SYN REPLY Stream #1 1464 0x00, 0x18, 0x08, 0x00, // SYN REPLY Stream #1
1468 0x00, 0x00, 0x00, 0x01, 1465 0x00, 0x00, 0x00, 0x01,
1469 0x00, 0x00, 0x00, 0x01, 1466 0x00, 0x00, 0x00, 0x01,
1470 0x00, 0x00, 0x00, 0x02, 1467 0x00, 0x00, 0x00, 0x02,
1471 'a', 'a', 0x00, 0x00, 1468 'a', 'a', 0x00, 0x00,
1472 0x00, 0x02, 'b', 'b', 1469 0x00, 0x02, 'b', 'b',
1473 1470
1474 0x00, 0x14, 0x00, 0x00, // DATA on Stream #1 1471 0x00, 0x14, 0x00, 0x00, // DATA on Stream #1
1475 0x00, 0x00, 0x00, 0x01, 1472 0x00, 0x00, 0x00, 0x01,
1476 0xde, 0xad, 0xbe, 0xef, 1473 0xde, 0xad, 0xbe, 0xef,
1477 0xde, 0xad, 0xbe, 0xef, 1474 0xde, 0xad, 0xbe, 0xef,
1478 0xde, 0xad, 0xbe, 0xef, 1475 0xde, 0xad, 0xbe, 0xef,
1479 1476
1480 0x00, 0x0c, 0x00, 0x01, // DATA on Stream #1, with FIN 1477 0x00, 0x0c, 0x00, 0x01, // DATA on Stream #1, with FIN
1481 0x00, 0x00, 0x00, 0x01, 1478 0x00, 0x00, 0x00, 0x01,
1482 0xde, 0xad, 0xbe, 0xef, 1479 0xde, 0xad, 0xbe, 0xef,
1483 }; 1480 };
1484 1481
1485 TestSpdyVisitor visitor(spdy_version_); 1482 TestSpdyVisitor visitor(spdy_version_);
1486 if (IsSpdy2()) { 1483 if (IsSpdy2()) {
1487 visitor.SimulateInFramer(kV2Input, sizeof(kV2Input)); 1484 visitor.SimulateInFramer(kV2Input, sizeof(kV2Input));
1488 } else if (IsSpdy3()) { 1485 } else if (IsSpdy3()) {
1489 visitor.SimulateInFramer(kV3Input, sizeof(kV3Input)); 1486 visitor.SimulateInFramer(kV3Input, sizeof(kV3Input));
1490 } else { 1487 } else {
1491 visitor.SimulateInFramer(kV4Input, sizeof(kV4Input)); 1488 visitor.SimulateInFramer(kV4Input, sizeof(kV4Input));
1492 } 1489 }
1493 1490
1494 EXPECT_EQ(0, visitor.error_count_); 1491 EXPECT_EQ(0, visitor.error_count_);
1495 EXPECT_EQ(1, visitor.syn_frame_count_); 1492 EXPECT_EQ(1, visitor.syn_frame_count_);
1496 EXPECT_EQ(1, visitor.syn_reply_frame_count_); 1493 if (IsSpdy4()) {
1497 EXPECT_EQ(0, visitor.headers_frame_count_); 1494 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
1495 EXPECT_EQ(1, visitor.headers_frame_count_);
1496 } else {
1497 EXPECT_EQ(1, visitor.syn_reply_frame_count_);
1498 EXPECT_EQ(0, visitor.headers_frame_count_);
1499 }
1498 EXPECT_EQ(16, visitor.data_bytes_); 1500 EXPECT_EQ(16, visitor.data_bytes_);
1499 EXPECT_EQ(0, visitor.fin_frame_count_); 1501 EXPECT_EQ(0, visitor.fin_frame_count_);
1500 EXPECT_EQ(0, visitor.fin_flag_count_); 1502 EXPECT_EQ(0, visitor.fin_flag_count_);
1501 EXPECT_EQ(1, visitor.zero_length_data_frame_count_); 1503 EXPECT_EQ(1, visitor.zero_length_data_frame_count_);
1502 EXPECT_EQ(2, visitor.data_frame_count_); 1504 EXPECT_EQ(2, visitor.data_frame_count_);
1503 } 1505 }
1504 1506
1505 // Test that the FIN flag on a SYN reply frame signifies EOF. 1507 // Test that the FIN flag on a SYN reply frame signifies EOF.
1506 TEST_P(SpdyFramerTest, FinOnSynReplyFrame) { 1508 TEST_P(SpdyFramerTest, FinOnSynReplyFrame) {
1507 const unsigned char kV2Input[] = { 1509 const unsigned char kV2Input[] = {
(...skipping 25 matching lines...) Expand all
1533 1535
1534 0x80, spdy_version_ch_, 0x00, 0x02, // SYN REPLY Stream #1 1536 0x80, spdy_version_ch_, 0x00, 0x02, // SYN REPLY Stream #1
1535 0x01, 0x00, 0x00, 0x14, 1537 0x01, 0x00, 0x00, 0x14,
1536 0x00, 0x00, 0x00, 0x01, 1538 0x00, 0x00, 0x00, 0x01,
1537 0x00, 0x00, 0x00, 0x01, 1539 0x00, 0x00, 0x00, 0x01,
1538 0x00, 0x00, 0x00, 0x02, 1540 0x00, 0x00, 0x00, 0x02,
1539 'a', 'a', 0x00, 0x00, 1541 'a', 'a', 0x00, 0x00,
1540 0x00, 0x02, 'b', 'b', 1542 0x00, 0x02, 'b', 'b',
1541 }; 1543 };
1542 const unsigned char kV4Input[] = { 1544 const unsigned char kV4Input[] = {
1543 0x00, 0x1e, 0x01, 0x00, // SYN_STREAM #1 1545 0x00, 0x1c, 0x08, 0x08, // SYN_STREAM #1
1544 0x00, 0x00, 0x00, 0x01, 1546 0x00, 0x00, 0x00, 0x01,
1545 0x00, 0x00, 0x00, 0x00, 1547 0x00, 0x00, 0x00, 0x00,
1546 0x00, 0x00, 0x00, 0x00, 1548 0x00, 0x00, 0x00, 0x01,
1547 0x00, 0x01, 0x00, 0x00,
1548 0x00, 0x02, 'h', 'h',
1549 0x00, 0x00, 0x00, 0x02, 1549 0x00, 0x00, 0x00, 0x02,
1550 'v', 'v', 1550 'h', 'h', 0x00, 0x00,
1551 0x00, 0x02, 'v', 'v',
1551 1552
1552 0x00, 0x18, 0x02, 0x01, // SYN_REPLY #1, with FIN 1553 0x00, 0x18, 0x08, 0x01, // SYN_REPLY #1, with FIN
1553 0x00, 0x00, 0x00, 0x01, 1554 0x00, 0x00, 0x00, 0x01,
1554 0x00, 0x00, 0x00, 0x01, 1555 0x00, 0x00, 0x00, 0x01,
1555 0x00, 0x00, 0x00, 0x02, 1556 0x00, 0x00, 0x00, 0x02,
1556 'a', 'a', 0x00, 0x00, 1557 'a', 'a', 0x00, 0x00,
1557 0x00, 0x02, 'b', 'b', 1558 0x00, 0x02, 'b', 'b',
1558 }; 1559 };
1559 1560
1560 TestSpdyVisitor visitor(spdy_version_); 1561 TestSpdyVisitor visitor(spdy_version_);
1561 if (IsSpdy2()) { 1562 if (IsSpdy2()) {
1562 visitor.SimulateInFramer(kV2Input, sizeof(kV2Input)); 1563 visitor.SimulateInFramer(kV2Input, sizeof(kV2Input));
1563 } else if (IsSpdy3()) { 1564 } else if (IsSpdy3()) {
1564 visitor.SimulateInFramer(kV3Input, sizeof(kV3Input)); 1565 visitor.SimulateInFramer(kV3Input, sizeof(kV3Input));
1565 } else { 1566 } else {
1566 visitor.SimulateInFramer(kV4Input, sizeof(kV4Input)); 1567 visitor.SimulateInFramer(kV4Input, sizeof(kV4Input));
1567 } 1568 }
1568 1569
1569 EXPECT_EQ(0, visitor.error_count_); 1570 EXPECT_EQ(0, visitor.error_count_);
1570 EXPECT_EQ(1, visitor.syn_frame_count_); 1571 EXPECT_EQ(1, visitor.syn_frame_count_);
1571 EXPECT_EQ(1, visitor.syn_reply_frame_count_); 1572 if (IsSpdy4()) {
1572 EXPECT_EQ(0, visitor.headers_frame_count_); 1573 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
1574 EXPECT_EQ(1, visitor.headers_frame_count_);
1575 } else {
1576 EXPECT_EQ(1, visitor.syn_reply_frame_count_);
1577 EXPECT_EQ(0, visitor.headers_frame_count_);
1578 }
1573 EXPECT_EQ(0, visitor.data_bytes_); 1579 EXPECT_EQ(0, visitor.data_bytes_);
1574 EXPECT_EQ(0, visitor.fin_frame_count_); 1580 EXPECT_EQ(0, visitor.fin_frame_count_);
1575 EXPECT_EQ(1, visitor.fin_flag_count_); 1581 EXPECT_EQ(1, visitor.fin_flag_count_);
1576 EXPECT_EQ(1, visitor.zero_length_data_frame_count_); 1582 EXPECT_EQ(1, visitor.zero_length_data_frame_count_);
1577 EXPECT_EQ(0, visitor.data_frame_count_); 1583 EXPECT_EQ(0, visitor.data_frame_count_);
1578 } 1584 }
1579 1585
1580 TEST_P(SpdyFramerTest, HeaderCompression) { 1586 TEST_P(SpdyFramerTest, HeaderCompression) {
1581 SpdyFramer send_framer(spdy_version_); 1587 SpdyFramer send_framer(spdy_version_);
1582 SpdyFramer recv_framer(spdy_version_); 1588 SpdyFramer recv_framer(spdy_version_);
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
1973 0x00, 0x02, 0x00, 0x00, 1979 0x00, 0x02, 0x00, 0x00,
1974 0x00, 0x03, 'b', 'a', 1980 0x00, 0x03, 'b', 'a',
1975 'r', 0x00, 0x00, 0x00, 1981 'r', 0x00, 0x00, 0x00,
1976 0x03, 'f', 'o', 'o', 1982 0x03, 'f', 'o', 'o',
1977 0x00, 0x00, 0x00, 0x03, 1983 0x00, 0x00, 0x00, 0x03,
1978 'f', 'o', 'o', 0x00, 1984 'f', 'o', 'o', 0x00,
1979 0x00, 0x00, 0x03, 'b', 1985 0x00, 0x00, 0x03, 'b',
1980 'a', 'r' 1986 'a', 'r'
1981 }; 1987 };
1982 const unsigned char kV4FrameData[] = { 1988 const unsigned char kV4FrameData[] = {
1983 0x00, 0x2e, 0x01, 0x00, 1989 0x00, 0x2c, 0x08, 0x08,
1984 0x00, 0x00, 0x00, 0x01, 1990 0x00, 0x00, 0x00, 0x01,
1985 0x00, 0x00, 0x00, 0x00, 1991 0x00, 0x00, 0x00, 0x07,
1986 kPri, kCre, 0x00, 0x00, 1992 0x00, 0x00, 0x00, 0x02,
1987 0x00, 0x02, 0x00, 0x00,
1988 0x00, 0x03, 'b', 'a',
1989 'r', 0x00, 0x00, 0x00,
1990 0x03, 'f', 'o', 'o',
1991 0x00, 0x00, 0x00, 0x03, 1993 0x00, 0x00, 0x00, 0x03,
1992 'f', 'o', 'o', 0x00, 1994 'b', 'a', 'r', 0x00,
1993 0x00, 0x00, 0x03, 'b', 1995 0x00, 0x00, 0x03, 'f',
1994 'a', 'r' 1996 'o', 'o', 0x00, 0x00,
1997 0x00, 0x03, 'f', 'o',
1998 'o', 0x00, 0x00, 0x00,
1999 0x03, 'b', 'a', 'r'
1995 }; 2000 };
1996 scoped_ptr<SpdyFrame> frame( 2001 scoped_ptr<SpdyFrame> frame(
1997 framer.CreateSynStream(1, // stream id 2002 framer.CreateSynStream(1, // stream id
1998 0, // associated stream id 2003 0, // associated stream id
1999 framer.GetLowestPriority(), 2004 framer.GetLowestPriority(),
2000 kCre, // credential slot 2005 kCre, // credential slot
2001 CONTROL_FLAG_NONE, 2006 CONTROL_FLAG_NONE,
2002 false, // compress 2007 false, // compress
2003 &headers)); 2008 &headers));
2004 if (IsSpdy2()) { 2009 if (IsSpdy2()) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2039 0x00, 0x00, 0x00, 0x00, 2044 0x00, 0x00, 0x00, 0x00,
2040 0x00, 0x02, 0x00, 0x00, 2045 0x00, 0x02, 0x00, 0x00,
2041 0x00, 0x00, 0x00, 0x00, 2046 0x00, 0x00, 0x00, 0x00,
2042 0x00, 0x03, 'f', 'o', 2047 0x00, 0x03, 'f', 'o',
2043 'o', 0x00, 0x00, 0x00, 2048 'o', 0x00, 0x00, 0x00,
2044 0x03, 'f', 'o', 'o', 2049 0x03, 'f', 'o', 'o',
2045 0x00, 0x00, 0x00, 0x03, 2050 0x00, 0x00, 0x00, 0x03,
2046 'b', 'a', 'r' 2051 'b', 'a', 'r'
2047 }; 2052 };
2048 const unsigned char kV4FrameData[] = { 2053 const unsigned char kV4FrameData[] = {
2049 0x00, 0x2b, 0x01, 0x01, 2054 0x00, 0x29, 0x08, 0x09,
2050 0x7f, 0xff, 0xff, 0xff,
2051 0x7f, 0xff, 0xff, 0xff, 2055 0x7f, 0xff, 0xff, 0xff,
2052 0x00, 0x00, 0x00, 0x00, 2056 0x00, 0x00, 0x00, 0x00,
2053 0x00, 0x02, 0x00, 0x00, 2057 0x00, 0x00, 0x00, 0x02,
2054 0x00, 0x00, 0x00, 0x00, 2058 0x00, 0x00, 0x00, 0x00,
2055 0x00, 0x03, 'f', 'o',
2056 'o', 0x00, 0x00, 0x00,
2057 0x03, 'f', 'o', 'o',
2058 0x00, 0x00, 0x00, 0x03, 2059 0x00, 0x00, 0x00, 0x03,
2059 'b', 'a', 'r' 2060 'f', 'o', 'o', 0x00,
2061 0x00, 0x00, 0x03, 'f',
2062 'o', 'o', 0x00, 0x00,
2063 0x00, 0x03, 'b', 'a',
2064 'r'
2060 }; 2065 };
2061 scoped_ptr<SpdyFrame> frame( 2066 scoped_ptr<SpdyFrame> frame(
2062 framer.CreateSynStream(0x7fffffff, // stream id 2067 framer.CreateSynStream(0x7fffffff, // stream id
2063 0x7fffffff, // associated stream id 2068 0x7fffffff, // associated stream id
2064 framer.GetHighestPriority(), 2069 framer.GetHighestPriority(),
2065 0, // credential slot 2070 0, // credential slot
2066 CONTROL_FLAG_FIN, 2071 CONTROL_FLAG_FIN,
2067 false, // compress 2072 false, // compress
2068 &headers)); 2073 &headers));
2069 if (IsSpdy2()) { 2074 if (IsSpdy2()) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2105 kPri, 0x00, 0x00, 0x00, 2110 kPri, 0x00, 0x00, 0x00,
2106 0x00, 0x02, 0x00, 0x00, 2111 0x00, 0x02, 0x00, 0x00,
2107 0x00, 0x03, 'b', 'a', 2112 0x00, 0x03, 'b', 'a',
2108 'r', 0x00, 0x00, 0x00, 2113 'r', 0x00, 0x00, 0x00,
2109 0x03, 'f', 'o', 'o', 2114 0x03, 'f', 'o', 'o',
2110 0x00, 0x00, 0x00, 0x03, 2115 0x00, 0x00, 0x00, 0x03,
2111 'f', 'o', 'o', 0x00, 2116 'f', 'o', 'o', 0x00,
2112 0x00, 0x00, 0x00 2117 0x00, 0x00, 0x00
2113 }; 2118 };
2114 const unsigned char kV4FrameData[] = { 2119 const unsigned char kV4FrameData[] = {
2115 0x00, 0x2b, 0x01, 0x01, 2120 0x00, 0x29, 0x08, 0x09,
2116 0x7f, 0xff, 0xff, 0xff, 2121 0x7f, 0xff, 0xff, 0xff,
2117 0x7f, 0xff, 0xff, 0xff, 2122 0x00, 0x00, 0x00, 0x01,
2118 kPri, 0x00, 0x00, 0x00, 2123 0x00, 0x00, 0x00, 0x02,
2119 0x00, 0x02, 0x00, 0x00,
2120 0x00, 0x03, 'b', 'a',
2121 'r', 0x00, 0x00, 0x00,
2122 0x03, 'f', 'o', 'o',
2123 0x00, 0x00, 0x00, 0x03, 2124 0x00, 0x00, 0x00, 0x03,
2124 'f', 'o', 'o', 0x00, 2125 'b', 'a', 'r', 0x00,
2125 0x00, 0x00, 0x00 2126 0x00, 0x00, 0x03, 'f',
2127 'o', 'o', 0x00, 0x00,
2128 0x00, 0x03, 'f', 'o',
2129 'o', 0x00, 0x00, 0x00,
2130 0x00
2126 }; 2131 };
2127 scoped_ptr<SpdyFrame> frame( 2132 scoped_ptr<SpdyFrame> frame(
2128 framer.CreateSynStream(0x7fffffff, // stream id 2133 framer.CreateSynStream(0x7fffffff, // stream id
2129 0x7fffffff, // associated stream id 2134 0x7fffffff, // associated stream id
2130 1, // priority 2135 1, // priority
2131 0, // credential slot 2136 0, // credential slot
2132 CONTROL_FLAG_FIN, 2137 CONTROL_FLAG_FIN,
2133 false, // compress 2138 false, // compress
2134 &headers)); 2139 &headers));
2135 if (IsSpdy2()) { 2140 if (IsSpdy2()) {
(...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after
2963 0x66, 0x80, 0x00, 0x4a, 2968 0x66, 0x80, 0x00, 0x4a,
2964 0xcb, 0xcf, 0x07, 0x08, 2969 0xcb, 0xcf, 0x07, 0x08,
2965 0x20, 0x10, 0x95, 0x96, 2970 0x20, 0x10, 0x95, 0x96,
2966 0x9f, 0x0f, 0xa2, 0x00, 2971 0x9f, 0x0f, 0xa2, 0x00,
2967 0x02, 0x28, 0x29, 0xb1, 2972 0x02, 0x28, 0x29, 0xb1,
2968 0x08, 0x20, 0x80, 0x00, 2973 0x08, 0x20, 0x80, 0x00,
2969 0x00, 0x00, 0x00, 0xff, 2974 0x00, 0x00, 0x00, 0xff,
2970 0xff, 2975 0xff,
2971 }; 2976 };
2972 const unsigned char kV4FrameData[] = { 2977 const unsigned char kV4FrameData[] = {
2973 0x00, 0x35, 0x08, 0x00, 2978 0x00, 0x25, 0x08, 0x00,
2974 0x00, 0x00, 0x00, 0x01, 2979 0x00, 0x00, 0x00, 0x01,
2975 0x38, 0xea, 0xe3, 0xc6, 2980 0x38, 0xea, 0xe3, 0xc6,
2976 0xa7, 0xc2, 0x02, 0xe5, 2981 0xa7, 0xc2, 0x02, 0xe5,
2977 0x0e, 0x50, 0xc2, 0x4b, 2982 0x0e, 0x50, 0xc2, 0x4b,
2978 0x4a, 0x04, 0xe5, 0x0b, 2983 0x4a, 0x04, 0xe5, 0x0b,
2979 0x66, 0x80, 0x00, 0x4a, 2984 0x66, 0x80, 0x00, 0x4a,
2980 0xcb, 0xcf, 0x07, 0x08, 2985 0xcb, 0xcf, 0x07, 0x08,
2981 0x20, 0x10, 0x95, 0x96, 2986 0x20, 0x10, 0x95, 0x96,
2982 0x9f, 0x0f, 0xa2, 0x00, 2987 0x9f, 0x0f, 0xa2, 0x00,
2983 0x02, 0x28, 0x29, 0xb1, 2988 0x02, 0x28, 0x29, 0xb1,
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
3184 framer.CreateSynReply(1, // stream_id 3189 framer.CreateSynReply(1, // stream_id
3185 CONTROL_FLAG_NONE, 3190 CONTROL_FLAG_NONE,
3186 true, // compress 3191 true, // compress
3187 &headers)); 3192 &headers));
3188 EXPECT_TRUE(control_frame.get() != NULL); 3193 EXPECT_TRUE(control_frame.get() != NULL);
3189 TestSpdyVisitor visitor(spdy_version_); 3194 TestSpdyVisitor visitor(spdy_version_);
3190 visitor.use_compression_ = true; 3195 visitor.use_compression_ = true;
3191 visitor.SimulateInFramer( 3196 visitor.SimulateInFramer(
3192 reinterpret_cast<unsigned char*>(control_frame->data()), 3197 reinterpret_cast<unsigned char*>(control_frame->data()),
3193 control_frame->size()); 3198 control_frame->size());
3194 EXPECT_EQ(1, visitor.syn_reply_frame_count_); 3199 if (IsSpdy4()) {
3200 EXPECT_EQ(0, visitor.syn_reply_frame_count_);
3201 EXPECT_EQ(1, visitor.headers_frame_count_);
3202 } else {
3203 EXPECT_EQ(1, visitor.syn_reply_frame_count_);
3204 EXPECT_EQ(0, visitor.headers_frame_count_);
3205 }
3195 EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_)); 3206 EXPECT_TRUE(CompareHeaderBlocks(&headers, &visitor.headers_));
3196 } 3207 }
3197 3208
3198 TEST_P(SpdyFramerTest, ReadCompressedHeadersHeaderBlock) { 3209 TEST_P(SpdyFramerTest, ReadCompressedHeadersHeaderBlock) {
3199 SpdyHeaderBlock headers; 3210 SpdyHeaderBlock headers;
3200 headers["alpha"] = "beta"; 3211 headers["alpha"] = "beta";
3201 headers["gamma"] = "delta"; 3212 headers["gamma"] = "delta";
3202 SpdyFramer framer(spdy_version_); 3213 SpdyFramer framer(spdy_version_);
3203 scoped_ptr<SpdyFrame> control_frame( 3214 scoped_ptr<SpdyFrame> control_frame(
3204 framer.CreateHeaders(1, // stream_id 3215 framer.CreateHeaders(1, // stream_id
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after
3839 TestSpdyVisitor visitor(spdy_version_); 3850 TestSpdyVisitor visitor(spdy_version_);
3840 visitor.use_compression_ = false; 3851 visitor.use_compression_ = false;
3841 visitor.SimulateInFramer(kFrameData, arraysize(kFrameData)); 3852 visitor.SimulateInFramer(kFrameData, arraysize(kFrameData));
3842 EXPECT_EQ(1, visitor.error_count_); 3853 EXPECT_EQ(1, visitor.error_count_);
3843 } 3854 }
3844 3855
3845 TEST_P(SpdyFramerTest, SizesTest) { 3856 TEST_P(SpdyFramerTest, SizesTest) {
3846 SpdyFramer framer(spdy_version_); 3857 SpdyFramer framer(spdy_version_);
3847 EXPECT_EQ(8u, framer.GetDataFrameMinimumSize()); 3858 EXPECT_EQ(8u, framer.GetDataFrameMinimumSize());
3848 if (IsSpdy4()) { 3859 if (IsSpdy4()) {
3860 EXPECT_EQ(8u, framer.GetControlFrameHeaderSize());
3861 EXPECT_EQ(12u, framer.GetSynStreamMinimumSize());
3849 EXPECT_EQ(8u, framer.GetSynReplyMinimumSize()); 3862 EXPECT_EQ(8u, framer.GetSynReplyMinimumSize());
3850 EXPECT_EQ(12u, framer.GetRstStreamSize()); 3863 EXPECT_EQ(12u, framer.GetRstStreamSize());
3851 EXPECT_EQ(12u, framer.GetSettingsMinimumSize()); 3864 EXPECT_EQ(12u, framer.GetSettingsMinimumSize());
3865 EXPECT_EQ(8u, framer.GetSynReplyMinimumSize());
3866 EXPECT_EQ(12u, framer.GetRstStreamSize());
3867 EXPECT_EQ(12u, framer.GetSettingsMinimumSize());
3852 EXPECT_EQ(12u, framer.GetPingSize()); 3868 EXPECT_EQ(12u, framer.GetPingSize());
3853 EXPECT_EQ(16u, framer.GetGoAwaySize()); 3869 EXPECT_EQ(16u, framer.GetGoAwaySize());
3854 EXPECT_EQ(8u, framer.GetHeadersMinimumSize()); 3870 EXPECT_EQ(8u, framer.GetHeadersMinimumSize());
3855 EXPECT_EQ(12u, framer.GetWindowUpdateSize()); 3871 EXPECT_EQ(12u, framer.GetWindowUpdateSize());
3856 EXPECT_EQ(10u, framer.GetCredentialMinimumSize()); 3872 EXPECT_EQ(10u, framer.GetCredentialMinimumSize());
3857 EXPECT_EQ(8u, framer.GetBlockedSize()); 3873 EXPECT_EQ(8u, framer.GetBlockedSize());
3858 EXPECT_EQ(12u, framer.GetPushPromiseMinimumSize()); 3874 EXPECT_EQ(12u, framer.GetPushPromiseMinimumSize());
3859 EXPECT_EQ(8u, framer.GetFrameMinimumSize()); 3875 EXPECT_EQ(8u, framer.GetFrameMinimumSize());
3860 EXPECT_EQ(65535u, framer.GetFrameMaximumSize()); 3876 EXPECT_EQ(65535u, framer.GetFrameMaximumSize());
3861 EXPECT_EQ(65527u, framer.GetDataFrameMaximumPayload()); 3877 EXPECT_EQ(65527u, framer.GetDataFrameMaximumPayload());
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
4067 SpdyFramer framer(spdy_version_); 4083 SpdyFramer framer(spdy_version_);
4068 framer.set_visitor(&visitor); 4084 framer.set_visitor(&visitor);
4069 framer.set_debug_visitor(&debug_visitor); 4085 framer.set_debug_visitor(&debug_visitor);
4070 4086
4071 EXPECT_CALL(debug_visitor, OnSendCompressedFrame(8, SYN_STREAM, _, _)); 4087 EXPECT_CALL(debug_visitor, OnSendCompressedFrame(8, SYN_STREAM, _, _));
4072 4088
4073 SpdyHeaderBlock headers; 4089 SpdyHeaderBlock headers;
4074 headers["foo"] = "bar"; 4090 headers["foo"] = "bar";
4075 scoped_ptr<SpdyFrame> frame( 4091 scoped_ptr<SpdyFrame> frame(
4076 framer.CreateSynStream(8, 3, 1, 0, CONTROL_FLAG_NONE, true, &headers)); 4092 framer.CreateSynStream(8, 3, 1, 0, CONTROL_FLAG_NONE, true, &headers));
4077 SetFrameFlags(frame.get(), flags, spdy_version_); 4093 int set_flags = flags;
4094 if(IsSpdy4()) {
4095 set_flags |= HEADERS_FLAG_PRIORITY; // Required for SYN_STREAM simulation .
4096 }
4097 SetFrameFlags(frame.get(), set_flags, spdy_version_);
4078 4098
4079 if (flags & ~(CONTROL_FLAG_FIN | CONTROL_FLAG_UNIDIRECTIONAL)) { 4099 if (!IsSpdy4() &&
4100 flags & ~(CONTROL_FLAG_FIN | CONTROL_FLAG_UNIDIRECTIONAL)) {
4101 EXPECT_CALL(visitor, OnError(_));
4102 } else if (IsSpdy4() &&
4103 flags & ~(CONTROL_FLAG_FIN | HEADERS_FLAG_PRIORITY)) {
4080 EXPECT_CALL(visitor, OnError(_)); 4104 EXPECT_CALL(visitor, OnError(_));
4081 } else { 4105 } else {
4082 EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(8, SYN_STREAM, _)); 4106 EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(8, SYN_STREAM, _));
4083 EXPECT_CALL(visitor, OnSynStream(8, 3, 1, 0, flags & CONTROL_FLAG_FIN, 4107 if (IsSpdy4()) {
4084 flags & CONTROL_FLAG_UNIDIRECTIONAL)); 4108 EXPECT_CALL(visitor, OnSynStream(8, 0, 1, 0, flags & CONTROL_FLAG_FIN,
4109 false));
4110 } else {
4111 EXPECT_CALL(visitor, OnSynStream(8, 3, 1, 0, flags & CONTROL_FLAG_FIN,
4112 flags & CONTROL_FLAG_UNIDIRECTIONAL));
4113 }
4085 EXPECT_CALL(visitor, OnControlFrameHeaderData(8, _, _)) 4114 EXPECT_CALL(visitor, OnControlFrameHeaderData(8, _, _))
4086 .WillRepeatedly(testing::Return(true)); 4115 .WillRepeatedly(testing::Return(true));
4087 if (flags & DATA_FLAG_FIN) { 4116 if (flags & DATA_FLAG_FIN) {
4088 EXPECT_CALL(visitor, OnStreamFrameData(_, _, 0, true)); 4117 EXPECT_CALL(visitor, OnStreamFrameData(_, _, 0, true));
4089 } 4118 }
4090 } 4119 }
4091 4120
4092 framer.ProcessInput(frame->data(), frame->size()); 4121 framer.ProcessInput(frame->data(), frame->size());
4093 if (flags & ~(CONTROL_FLAG_FIN | CONTROL_FLAG_UNIDIRECTIONAL)) { 4122 if (!IsSpdy4() &&
4123 flags & ~(CONTROL_FLAG_FIN | CONTROL_FLAG_UNIDIRECTIONAL)) {
4094 EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); 4124 EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state());
4095 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME_FLAGS, 4125 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME_FLAGS,
4096 framer.error_code()) 4126 framer.error_code())
4127 << SpdyFramer::ErrorCodeToString(framer.error_code());
4128 } else if (IsSpdy4() &&
4129 flags & ~(CONTROL_FLAG_FIN | HEADERS_FLAG_PRIORITY)) {
4130 EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state());
4131 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME_FLAGS,
4132 framer.error_code())
4097 << SpdyFramer::ErrorCodeToString(framer.error_code()); 4133 << SpdyFramer::ErrorCodeToString(framer.error_code());
4098 } else { 4134 } else {
4099 EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); 4135 EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state());
4100 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) 4136 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code())
4101 << SpdyFramer::ErrorCodeToString(framer.error_code()); 4137 << SpdyFramer::ErrorCodeToString(framer.error_code());
4102 } 4138 }
4103 } 4139 }
4104 } 4140 }
4105 4141
4106 TEST_P(SpdyFramerTest, SynReplyFrameFlags) { 4142 TEST_P(SpdyFramerTest, SynReplyFrameFlags) {
4143 if (IsSpdy4()) {
4144 // Covered by HEADERS case.
4145 return;
4146 }
4107 for (int flags = 0; flags < 256; ++flags) { 4147 for (int flags = 0; flags < 256; ++flags) {
4108 SCOPED_TRACE(testing::Message() << "Flags " << flags); 4148 SCOPED_TRACE(testing::Message() << "Flags " << flags);
4109 4149
4110 testing::StrictMock<test::MockVisitor> visitor; 4150 testing::StrictMock<test::MockVisitor> visitor;
4111 SpdyFramer framer(spdy_version_); 4151 SpdyFramer framer(spdy_version_);
4112 framer.set_visitor(&visitor); 4152 framer.set_visitor(&visitor);
4113 4153
4114 SpdyHeaderBlock headers; 4154 SpdyHeaderBlock headers;
4115 headers["foo"] = "bar"; 4155 headers["foo"] = "bar";
4116 scoped_ptr<SpdyFrame> frame( 4156 scoped_ptr<SpdyFrame> frame(
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
4236 } else { 4276 } else {
4237 EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); 4277 EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state());
4238 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) 4278 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code())
4239 << SpdyFramer::ErrorCodeToString(framer.error_code()); 4279 << SpdyFramer::ErrorCodeToString(framer.error_code());
4240 } 4280 }
4241 } 4281 }
4242 } 4282 }
4243 4283
4244 TEST_P(SpdyFramerTest, HeadersFrameFlags) { 4284 TEST_P(SpdyFramerTest, HeadersFrameFlags) {
4245 for (int flags = 0; flags < 256; ++flags) { 4285 for (int flags = 0; flags < 256; ++flags) {
4286 if (IsSpdy4() && flags & HEADERS_FLAG_PRIORITY) {
4287 // Covered by SYN_STREAM case.
4288 continue;
4289 }
4246 SCOPED_TRACE(testing::Message() << "Flags " << flags); 4290 SCOPED_TRACE(testing::Message() << "Flags " << flags);
4247 4291
4248 testing::StrictMock<test::MockVisitor> visitor; 4292 testing::StrictMock<test::MockVisitor> visitor;
4249 SpdyFramer framer(spdy_version_); 4293 SpdyFramer framer(spdy_version_);
4250 framer.set_visitor(&visitor); 4294 framer.set_visitor(&visitor);
4251 4295
4252 SpdyHeaderBlock headers; 4296 SpdyHeaderBlock headers;
4253 headers["foo"] = "bar"; 4297 headers["foo"] = "bar";
4254 scoped_ptr<SpdyFrame> frame( 4298 scoped_ptr<SpdyFrame> frame(
4255 framer.CreateHeaders(57, CONTROL_FLAG_NONE, true, &headers)); 4299 framer.CreateHeaders(57, CONTROL_FLAG_NONE, true, &headers));
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
4583 SpdyBlockedIR blocked_ir(0); 4627 SpdyBlockedIR blocked_ir(0);
4584 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(blocked_ir)); 4628 scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(blocked_ir));
4585 framer.ProcessInput(frame->data(), framer.GetBlockedSize()); 4629 framer.ProcessInput(frame->data(), framer.GetBlockedSize());
4586 4630
4587 EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); 4631 EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state());
4588 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) 4632 EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code())
4589 << SpdyFramer::ErrorCodeToString(framer.error_code()); 4633 << SpdyFramer::ErrorCodeToString(framer.error_code());
4590 } 4634 }
4591 4635
4592 } // namespace net 4636 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_framer.cc ('k') | net/spdy/spdy_protocol.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698