| OLD | NEW |
| 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 "net/spdy/spdy_framer.h" | 5 #include "net/spdy/spdy_framer.h" |
| 6 | 6 |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 #include <string.h> | 8 #include <string.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 1454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1465 syn_stream.SetHeader("content-type", "text/html"); | 1465 syn_stream.SetHeader("content-type", "text/html"); |
| 1466 syn_stream.SetHeader("content-length", "12"); | 1466 syn_stream.SetHeader("content-length", "12"); |
| 1467 SpdySerializedFrame frame1(framer.SerializeSynStream(syn_stream)); | 1467 SpdySerializedFrame frame1(framer.SerializeSynStream(syn_stream)); |
| 1468 size_t uncompressed_size1 = visitor->last_payload_len_; | 1468 size_t uncompressed_size1 = visitor->last_payload_len_; |
| 1469 size_t compressed_size1 = | 1469 size_t compressed_size1 = |
| 1470 visitor->last_frame_len_ - framer.GetSynStreamMinimumSize(); | 1470 visitor->last_frame_len_ - framer.GetSynStreamMinimumSize(); |
| 1471 EXPECT_EQ(165u, uncompressed_size1); | 1471 EXPECT_EQ(165u, uncompressed_size1); |
| 1472 #if defined(USE_SYSTEM_ZLIB) | 1472 #if defined(USE_SYSTEM_ZLIB) |
| 1473 EXPECT_EQ(181u, compressed_size1); | 1473 EXPECT_EQ(181u, compressed_size1); |
| 1474 #else // !defined(USE_SYSTEM_ZLIB) | 1474 #else // !defined(USE_SYSTEM_ZLIB) |
| 1475 EXPECT_EQ(116u, compressed_size1); | 1475 EXPECT_EQ(117u, compressed_size1); |
| 1476 #endif // !defined(USE_SYSTEM_ZLIB) | 1476 #endif // !defined(USE_SYSTEM_ZLIB) |
| 1477 SpdySerializedFrame frame2(framer.SerializeSynStream(syn_stream)); | 1477 SpdySerializedFrame frame2(framer.SerializeSynStream(syn_stream)); |
| 1478 size_t uncompressed_size2 = visitor->last_payload_len_; | 1478 size_t uncompressed_size2 = visitor->last_payload_len_; |
| 1479 size_t compressed_size2 = | 1479 size_t compressed_size2 = |
| 1480 visitor->last_frame_len_ - framer.GetSynStreamMinimumSize(); | 1480 visitor->last_frame_len_ - framer.GetSynStreamMinimumSize(); |
| 1481 | 1481 |
| 1482 // Expect the second frame to be more compact than the first. | 1482 // Expect the second frame to be more compact than the first. |
| 1483 EXPECT_LE(frame2.size(), frame1.size()); | 1483 EXPECT_LE(frame2.size(), frame1.size()); |
| 1484 | 1484 |
| 1485 // Decompress the first frame | 1485 // Decompress the first frame |
| 1486 SpdySerializedFrame frame3( | 1486 SpdySerializedFrame frame3( |
| 1487 SpdyFramerTestUtil::DecompressFrame(&framer, frame1)); | 1487 SpdyFramerTestUtil::DecompressFrame(&framer, frame1)); |
| 1488 | 1488 |
| 1489 // Decompress the second frame | 1489 // Decompress the second frame |
| 1490 visitor.reset(new TestSpdyVisitor(spdy_version_)); | 1490 visitor.reset(new TestSpdyVisitor(spdy_version_)); |
| 1491 framer.set_debug_visitor(visitor.get()); | 1491 framer.set_debug_visitor(visitor.get()); |
| 1492 SpdySerializedFrame frame4( | 1492 SpdySerializedFrame frame4( |
| 1493 SpdyFramerTestUtil::DecompressFrame(&framer, frame2)); | 1493 SpdyFramerTestUtil::DecompressFrame(&framer, frame2)); |
| 1494 size_t uncompressed_size4 = frame4.size() - framer.GetSynStreamMinimumSize(); | 1494 size_t uncompressed_size4 = frame4.size() - framer.GetSynStreamMinimumSize(); |
| 1495 size_t compressed_size4 = | 1495 size_t compressed_size4 = |
| 1496 visitor->last_frame_len_ - framer.GetSynStreamMinimumSize(); | 1496 visitor->last_frame_len_ - framer.GetSynStreamMinimumSize(); |
| 1497 EXPECT_EQ(165u, uncompressed_size4); | 1497 EXPECT_EQ(165u, uncompressed_size4); |
| 1498 #if defined(USE_SYSTEM_ZLIB) | 1498 #if defined(USE_SYSTEM_ZLIB) |
| 1499 EXPECT_EQ(175u, compressed_size4); | 1499 EXPECT_EQ(175u, compressed_size4); |
| 1500 #else // !defined(USE_SYSTEM_ZLIB) | 1500 #else // !defined(USE_SYSTEM_ZLIB) |
| 1501 EXPECT_EQ(98u, compressed_size4); | 1501 EXPECT_EQ(99u, compressed_size4); |
| 1502 #endif // !defined(USE_SYSTEM_ZLIB) | 1502 #endif // !defined(USE_SYSTEM_ZLIB) |
| 1503 | 1503 |
| 1504 EXPECT_EQ(uncompressed_size1, uncompressed_size2); | 1504 EXPECT_EQ(uncompressed_size1, uncompressed_size2); |
| 1505 EXPECT_EQ(uncompressed_size1, uncompressed_size4); | 1505 EXPECT_EQ(uncompressed_size1, uncompressed_size4); |
| 1506 EXPECT_EQ(compressed_size2, compressed_size4); | 1506 EXPECT_EQ(compressed_size2, compressed_size4); |
| 1507 | 1507 |
| 1508 // Expect frames 3 & 4 to be the same. | 1508 // Expect frames 3 & 4 to be the same. |
| 1509 CompareFrames("Uncompressed SYN_STREAM", frame3, frame4); | 1509 CompareFrames("Uncompressed SYN_STREAM", frame3, frame4); |
| 1510 | 1510 |
| 1511 // Expect frames 3 to be the same as a uncompressed frame created | 1511 // Expect frames 3 to be the same as a uncompressed frame created |
| (...skipping 911 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2423 | 2423 |
| 2424 SpdyFramer framer(spdy_version_); | 2424 SpdyFramer framer(spdy_version_); |
| 2425 framer.set_enable_compression(true); | 2425 framer.set_enable_compression(true); |
| 2426 | 2426 |
| 2427 { | 2427 { |
| 2428 const char kDescription[] = "SYN_STREAM frame, low pri, no FIN"; | 2428 const char kDescription[] = "SYN_STREAM frame, low pri, no FIN"; |
| 2429 | 2429 |
| 2430 // clang-format off | 2430 // clang-format off |
| 2431 const unsigned char kV3FrameData[] = { | 2431 const unsigned char kV3FrameData[] = { |
| 2432 0x80, 0x03, 0x00, 0x01, | 2432 0x80, 0x03, 0x00, 0x01, |
| 2433 0x00, 0x00, 0x00, 0x36, | 2433 0x00, 0x00, 0x00, 0x37, |
| 2434 0x00, 0x00, 0x00, 0x01, | 2434 0x00, 0x00, 0x00, 0x01, |
| 2435 0x00, 0x00, 0x00, 0x00, | 2435 0x00, 0x00, 0x00, 0x00, |
| 2436 0x80, 0x00, 0x38, 0xEA, | 2436 0x80, 0x00, 0x38, 0xEA, |
| 2437 0xE3, 0xC6, 0xA7, 0xC2, | 2437 0xE3, 0xC6, 0xA7, 0xC2, |
| 2438 0x02, 0xE5, 0x0E, 0x50, | 2438 0x02, 0xE5, 0x0E, 0x50, |
| 2439 0xC2, 0x4B, 0x4A, 0x04, | 2439 0xC2, 0x4B, 0x4A, 0x04, |
| 2440 0xE5, 0x0B, 0x66, 0x80, | 2440 0xE5, 0x0B, 0x66, 0x80, |
| 2441 0x00, 0x4A, 0xCB, 0xCF, | 2441 0x00, 0x4A, 0xCB, 0xCF, |
| 2442 0x07, 0x08, 0x20, 0x10, | 2442 0x07, 0x08, 0x20, 0x10, |
| 2443 0x95, 0x96, 0x9F, 0x0F, | 2443 0x95, 0x96, 0x9F, 0x0F, |
| 2444 0xA2, 0x00, 0x02, 0x28, | 2444 0xA2, 0x00, 0x02, 0x28, |
| 2445 0x29, 0xB1, 0x08, 0x20, | 2445 0x29, 0xB1, 0x08, 0x20, |
| 2446 0x00, 0x00, 0x00, 0x00, | 2446 0x80, 0x00, 0x00, 0x00, |
| 2447 0xFF, 0xFF, | 2447 0x00, 0xFF, 0xFF, |
| 2448 }; | 2448 }; |
| 2449 const unsigned char kV3SIMDFrameData[] = { | 2449 const unsigned char kV3SIMDFrameData[] = { |
| 2450 0x80, 0x03, 0x00, 0x01, | 2450 0x80, 0x03, 0x00, 0x01, |
| 2451 0x00, 0x00, 0x00, 0x31, | 2451 0x00, 0x00, 0x00, 0x32, |
| 2452 0x00, 0x00, 0x00, 0x01, | 2452 0x00, 0x00, 0x00, 0x01, |
| 2453 0x00, 0x00, 0x00, 0x00, | 2453 0x00, 0x00, 0x00, 0x00, |
| 2454 0x80, 0x00, 0x38, 0xea, | 2454 0x80, 0x00, 0x38, 0xea, |
| 2455 0xe3, 0xc6, 0xa7, 0xc2, | 2455 0xe3, 0xc6, 0xa7, 0xc2, |
| 2456 0x02, 0xe5, 0x0e, 0x50, | 2456 0x02, 0xe5, 0x0e, 0x50, |
| 2457 0xc2, 0x4b, 0x4a, 0x04, | 2457 0xc2, 0x4b, 0x4a, 0x04, |
| 2458 0xe5, 0x0b, 0x66, 0x80, | 2458 0xe5, 0x0b, 0x66, 0x80, |
| 2459 0x00, 0x4a, 0xcb, 0xcf, | 2459 0x00, 0x4a, 0xcb, 0xcf, |
| 2460 0x07, 0x08, 0x20, 0x24, | 2460 0x07, 0x08, 0x20, 0x24, |
| 2461 0x0a, 0x20, 0x80, 0x92, | 2461 0x0a, 0x20, 0x80, 0x92, |
| 2462 0x12, 0x8b, 0x00, 0x02, | 2462 0x12, 0x8b, 0x00, 0x02, |
| 2463 0x00, 0x00, 0x00, 0xff, | 2463 0x08, 0x00, 0x00, 0x00, |
| 2464 0xff, | 2464 0xff, 0xff, |
| 2465 }; | 2465 }; |
| 2466 // clang-format on | 2466 // clang-format on |
| 2467 | 2467 |
| 2468 SpdySynStreamIR syn_stream(1); | 2468 SpdySynStreamIR syn_stream(1); |
| 2469 syn_stream.set_priority(4); | 2469 syn_stream.set_priority(4); |
| 2470 syn_stream.SetHeader("bar", "foo"); | 2470 syn_stream.SetHeader("bar", "foo"); |
| 2471 syn_stream.SetHeader("foo", "bar"); | 2471 syn_stream.SetHeader("foo", "bar"); |
| 2472 SpdySerializedFrame frame(framer.SerializeSynStream(syn_stream)); | 2472 SpdySerializedFrame frame(framer.SerializeSynStream(syn_stream)); |
| 2473 const unsigned char* frame_data = | 2473 const unsigned char* frame_data = |
| 2474 reinterpret_cast<const unsigned char*>(frame.data()); | 2474 reinterpret_cast<const unsigned char*>(frame.data()); |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2595 | 2595 |
| 2596 SpdyFramer framer(spdy_version_); | 2596 SpdyFramer framer(spdy_version_); |
| 2597 framer.set_enable_compression(true); | 2597 framer.set_enable_compression(true); |
| 2598 | 2598 |
| 2599 { | 2599 { |
| 2600 const char kDescription[] = "SYN_REPLY frame, no FIN"; | 2600 const char kDescription[] = "SYN_REPLY frame, no FIN"; |
| 2601 | 2601 |
| 2602 // clang-format off | 2602 // clang-format off |
| 2603 const unsigned char kV3FrameData[] = { | 2603 const unsigned char kV3FrameData[] = { |
| 2604 0x80, 0x03, 0x00, 0x02, | 2604 0x80, 0x03, 0x00, 0x02, |
| 2605 0x00, 0x00, 0x00, 0x30, | 2605 0x00, 0x00, 0x00, 0x31, |
| 2606 0x00, 0x00, 0x00, 0x01, | 2606 0x00, 0x00, 0x00, 0x01, |
| 2607 0x38, 0xea, 0xe3, 0xc6, | 2607 0x38, 0xea, 0xe3, 0xc6, |
| 2608 0xa7, 0xc2, 0x02, 0xe5, | 2608 0xa7, 0xc2, 0x02, 0xe5, |
| 2609 0x0e, 0x50, 0xc2, 0x4b, | 2609 0x0e, 0x50, 0xc2, 0x4b, |
| 2610 0x4a, 0x04, 0xe5, 0x0b, | 2610 0x4a, 0x04, 0xe5, 0x0b, |
| 2611 0x66, 0x80, 0x00, 0x4a, | 2611 0x66, 0x80, 0x00, 0x4a, |
| 2612 0xcb, 0xcf, 0x07, 0x08, | 2612 0xcb, 0xcf, 0x07, 0x08, |
| 2613 0x20, 0x10, 0x95, 0x96, | 2613 0x20, 0x10, 0x95, 0x96, |
| 2614 0x9f, 0x0f, 0xa2, 0x00, | 2614 0x9f, 0x0f, 0xa2, 0x00, |
| 2615 0x02, 0x28, 0x29, 0xb1, | 2615 0x02, 0x28, 0x29, 0xb1, |
| 2616 0x08, 0x20, 0x00, 0x00, | 2616 0x08, 0x20, 0x80, 0x00, |
| 2617 0x00, 0x00, 0xff, 0xff, | 2617 0x00, 0x00, 0x00, 0xff, |
| 2618 0xff, |
| 2618 }; | 2619 }; |
| 2619 | |
| 2620 const unsigned char kV3SIMDFrameData[] = { | 2620 const unsigned char kV3SIMDFrameData[] = { |
| 2621 0x80, 0x03, 0x00, 0x02, | 2621 0x80, 0x03, 0x00, 0x02, |
| 2622 0x00, 0x00, 0x00, 0x2b, | 2622 0x00, 0x00, 0x00, 0x2c, |
| 2623 0x00, 0x00, 0x00, 0x01, | 2623 0x00, 0x00, 0x00, 0x01, |
| 2624 0x38, 0xea, 0xe3, 0xc6, | 2624 0x38, 0xea, 0xe3, 0xc6, |
| 2625 0xa7, 0xc2, 0x02, 0xe5, | 2625 0xa7, 0xc2, 0x02, 0xe5, |
| 2626 0x0e, 0x50, 0xc2, 0x4b, | 2626 0x0e, 0x50, 0xc2, 0x4b, |
| 2627 0x4a, 0x04, 0xe5, 0x0b, | 2627 0x4a, 0x04, 0xe5, 0x0b, |
| 2628 0x66, 0x80, 0x00, 0x4a, | 2628 0x66, 0x80, 0x00, 0x4a, |
| 2629 0xcb, 0xcf, 0x07, 0x08, | 2629 0xcb, 0xcf, 0x07, 0x08, |
| 2630 0x20, 0x24, 0x0a, 0x20, | 2630 0x20, 0x24, 0x0a, 0x20, |
| 2631 0x80, 0x92, 0x12, 0x8b, | 2631 0x80, 0x92, 0x12, 0x8b, |
| 2632 0x00, 0x02, 0x00, 0x00, | 2632 0x00, 0x02, 0x08, 0x00, |
| 2633 0x00, 0xff, 0xff, | 2633 0x00, 0x00, 0xff, 0xff, |
| 2634 }; | 2634 }; |
| 2635 // clang-format on | 2635 // clang-format on |
| 2636 | 2636 |
| 2637 SpdySynReplyIR syn_reply(1); | 2637 SpdySynReplyIR syn_reply(1); |
| 2638 syn_reply.SetHeader("bar", "foo"); | 2638 syn_reply.SetHeader("bar", "foo"); |
| 2639 syn_reply.SetHeader("foo", "bar"); | 2639 syn_reply.SetHeader("foo", "bar"); |
| 2640 SpdySerializedFrame frame(framer.SerializeSynReply(syn_reply)); | 2640 SpdySerializedFrame frame(framer.SerializeSynReply(syn_reply)); |
| 2641 const unsigned char* frame_data = | 2641 const unsigned char* frame_data = |
| 2642 reinterpret_cast<const unsigned char*>(frame.data()); | 2642 reinterpret_cast<const unsigned char*>(frame.data()); |
| 2643 if (IsSpdy3()) { | 2643 if (IsSpdy3()) { |
| (...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3296 TEST_P(SpdyFramerTest, CreateHeadersCompressed) { | 3296 TEST_P(SpdyFramerTest, CreateHeadersCompressed) { |
| 3297 SpdyFramer framer(spdy_version_); | 3297 SpdyFramer framer(spdy_version_); |
| 3298 framer.set_enable_compression(true); | 3298 framer.set_enable_compression(true); |
| 3299 | 3299 |
| 3300 { | 3300 { |
| 3301 const char kDescription[] = "HEADERS frame, no FIN"; | 3301 const char kDescription[] = "HEADERS frame, no FIN"; |
| 3302 | 3302 |
| 3303 // clang-format off | 3303 // clang-format off |
| 3304 const unsigned char kV3FrameData[] = { | 3304 const unsigned char kV3FrameData[] = { |
| 3305 0x80, 0x03, 0x00, 0x08, | 3305 0x80, 0x03, 0x00, 0x08, |
| 3306 0x00, 0x00, 0x00, 0x30, | 3306 0x00, 0x00, 0x00, 0x31, |
| 3307 0x00, 0x00, 0x00, 0x01, | 3307 0x00, 0x00, 0x00, 0x01, |
| 3308 0x38, 0xea, 0xe3, 0xc6, | 3308 0x38, 0xea, 0xe3, 0xc6, |
| 3309 0xa7, 0xc2, 0x02, 0xe5, | 3309 0xa7, 0xc2, 0x02, 0xe5, |
| 3310 0x0e, 0x50, 0xc2, 0x4b, | 3310 0x0e, 0x50, 0xc2, 0x4b, |
| 3311 0x4a, 0x04, 0xe5, 0x0b, | 3311 0x4a, 0x04, 0xe5, 0x0b, |
| 3312 0x66, 0x80, 0x00, 0x4a, | 3312 0x66, 0x80, 0x00, 0x4a, |
| 3313 0xcb, 0xcf, 0x07, 0x08, | 3313 0xcb, 0xcf, 0x07, 0x08, |
| 3314 0x20, 0x10, 0x95, 0x96, | 3314 0x20, 0x10, 0x95, 0x96, |
| 3315 0x9f, 0x0f, 0xa2, 0x00, | 3315 0x9f, 0x0f, 0xa2, 0x00, |
| 3316 0x02, 0x28, 0x29, 0xb1, | 3316 0x02, 0x28, 0x29, 0xb1, |
| 3317 0x08, 0x20, 0x00, 0x00, | 3317 0x08, 0x20, 0x80, 0x00, |
| 3318 0x00, 0x00, 0xff, 0xff, | 3318 0x00, 0x00, 0x00, 0xff, |
| 3319 0xff, |
| 3319 }; | 3320 }; |
| 3320 const unsigned char kV3SIMDFrameData[] = { | 3321 const unsigned char kV3SIMDFrameData[] = { |
| 3321 0x80, 0x03, 0x00, 0x08, | 3322 0x80, 0x03, 0x00, 0x08, |
| 3322 0x00, 0x00, 0x00, 0x2b, | 3323 0x00, 0x00, 0x00, 0x2c, |
| 3323 0x00, 0x00, 0x00, 0x01, | 3324 0x00, 0x00, 0x00, 0x01, |
| 3324 0x38, 0xea, 0xe3, 0xc6, | 3325 0x38, 0xea, 0xe3, 0xc6, |
| 3325 0xa7, 0xc2, 0x02, 0xe5, | 3326 0xa7, 0xc2, 0x02, 0xe5, |
| 3326 0x0e, 0x50, 0xc2, 0x4b, | 3327 0x0e, 0x50, 0xc2, 0x4b, |
| 3327 0x4a, 0x04, 0xe5, 0x0b, | 3328 0x4a, 0x04, 0xe5, 0x0b, |
| 3328 0x66, 0x80, 0x00, 0x4a, | 3329 0x66, 0x80, 0x00, 0x4a, |
| 3329 0xcb, 0xcf, 0x07, 0x08, | 3330 0xcb, 0xcf, 0x07, 0x08, |
| 3330 0x20, 0x24, 0x0a, 0x20, | 3331 0x20, 0x24, 0x0a, 0x20, |
| 3331 0x80, 0x92, 0x12, 0x8b, | 3332 0x80, 0x92, 0x12, 0x8b, |
| 3332 0x00, 0x02, 0x00, 0x00, | 3333 0x00, 0x02, 0x08, 0x00, |
| 3333 0x00, 0xff, 0xff, | 3334 0x00, 0x00, 0xff, 0xff, |
| 3334 }; | 3335 }; |
| 3335 // clang-format on | 3336 // clang-format on |
| 3336 | 3337 |
| 3337 SpdyHeadersIR headers_ir(1); | 3338 SpdyHeadersIR headers_ir(1); |
| 3338 headers_ir.SetHeader("bar", "foo"); | 3339 headers_ir.SetHeader("bar", "foo"); |
| 3339 headers_ir.SetHeader("foo", "bar"); | 3340 headers_ir.SetHeader("foo", "bar"); |
| 3340 SpdySerializedFrame frame(framer.SerializeHeaders(headers_ir)); | 3341 SpdySerializedFrame frame(framer.SerializeHeaders(headers_ir)); |
| 3341 const unsigned char* frame_data = | 3342 const unsigned char* frame_data = |
| 3342 reinterpret_cast<const unsigned char*>(frame.data()); | 3343 reinterpret_cast<const unsigned char*>(frame.data()); |
| 3343 if (IsSpdy3()) { | 3344 if (IsSpdy3()) { |
| (...skipping 2919 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6263 | 6264 |
| 6264 EXPECT_EQ(1, visitor->data_frame_count_); | 6265 EXPECT_EQ(1, visitor->data_frame_count_); |
| 6265 EXPECT_EQ(strlen(four_score), static_cast<unsigned>(visitor->data_bytes_)); | 6266 EXPECT_EQ(strlen(four_score), static_cast<unsigned>(visitor->data_bytes_)); |
| 6266 EXPECT_EQ(0, visitor->headers_frame_count_); | 6267 EXPECT_EQ(0, visitor->headers_frame_count_); |
| 6267 } | 6268 } |
| 6268 } | 6269 } |
| 6269 | 6270 |
| 6270 } // namespace test | 6271 } // namespace test |
| 6271 | 6272 |
| 6272 } // namespace net | 6273 } // namespace net |
| OLD | NEW |