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

Side by Side Diff: net/spdy/hpack/hpack_decoder_test.cc

Issue 2102253003: Make SpdyHeaderBlock non-copyable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iOS fix. Created 4 years, 5 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
« no previous file with comments | « net/spdy/buffered_spdy_framer_unittest.cc ('k') | net/spdy/spdy_framer_test.cc » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/hpack/hpack_decoder.h" 5 #include "net/spdy/hpack/hpack_decoder.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 StringPiece string_piece; 303 StringPiece string_piece;
304 EXPECT_FALSE(decoder_peer_.DecodeNextName(&input_stream, &string_piece)); 304 EXPECT_FALSE(decoder_peer_.DecodeNextName(&input_stream, &string_piece));
305 EXPECT_FALSE(input_stream.NeedMoreData()); 305 EXPECT_FALSE(input_stream.NeedMoreData());
306 input_stream.MarkCurrentPosition(); 306 input_stream.MarkCurrentPosition();
307 EXPECT_EQ(1u, input_stream.ParsedBytes()); 307 EXPECT_EQ(1u, input_stream.ParsedBytes());
308 } 308 }
309 309
310 // Decoding indexed static table field should work. 310 // Decoding indexed static table field should work.
311 TEST_P(HpackDecoderTest, IndexedHeaderStatic) { 311 TEST_P(HpackDecoderTest, IndexedHeaderStatic) {
312 // Reference static table entries #2 and #5. 312 // Reference static table entries #2 and #5.
313 SpdyHeaderBlock header_set1 = DecodeBlockExpectingSuccess("\x82\x85"); 313 const SpdyHeaderBlock& header_set1 = DecodeBlockExpectingSuccess("\x82\x85");
314 SpdyHeaderBlock expected_header_set1; 314 SpdyHeaderBlock expected_header_set1;
315 expected_header_set1[":method"] = "GET"; 315 expected_header_set1[":method"] = "GET";
316 expected_header_set1[":path"] = "/index.html"; 316 expected_header_set1[":path"] = "/index.html";
317 EXPECT_EQ(expected_header_set1, header_set1); 317 EXPECT_EQ(expected_header_set1, header_set1);
318 318
319 // Reference static table entry #2. 319 // Reference static table entry #2.
320 SpdyHeaderBlock header_set2 = DecodeBlockExpectingSuccess("\x82"); 320 const SpdyHeaderBlock& header_set2 = DecodeBlockExpectingSuccess("\x82");
321 SpdyHeaderBlock expected_header_set2; 321 SpdyHeaderBlock expected_header_set2;
322 expected_header_set2[":method"] = "GET"; 322 expected_header_set2[":method"] = "GET";
323 EXPECT_EQ(expected_header_set2, header_set2); 323 EXPECT_EQ(expected_header_set2, header_set2);
324 } 324 }
325 325
326 TEST_P(HpackDecoderTest, IndexedHeaderDynamic) { 326 TEST_P(HpackDecoderTest, IndexedHeaderDynamic) {
327 // First header block: add an entry to header table. 327 // First header block: add an entry to header table.
328 SpdyHeaderBlock header_set1 = DecodeBlockExpectingSuccess( 328 const SpdyHeaderBlock& header_set1 = DecodeBlockExpectingSuccess(
329 "\x40\x03" 329 "\x40\x03"
330 "foo" 330 "foo"
331 "\x03" 331 "\x03"
332 "bar"); 332 "bar");
333 SpdyHeaderBlock expected_header_set1; 333 SpdyHeaderBlock expected_header_set1;
334 expected_header_set1["foo"] = "bar"; 334 expected_header_set1["foo"] = "bar";
335 EXPECT_EQ(expected_header_set1, header_set1); 335 EXPECT_EQ(expected_header_set1, header_set1);
336 336
337 // Second header block: add another entry to header table. 337 // Second header block: add another entry to header table.
338 SpdyHeaderBlock header_set2 = DecodeBlockExpectingSuccess( 338 const SpdyHeaderBlock& header_set2 = DecodeBlockExpectingSuccess(
339 "\xbe\x40\x04" 339 "\xbe\x40\x04"
340 "spam" 340 "spam"
341 "\x04" 341 "\x04"
342 "eggs"); 342 "eggs");
343 SpdyHeaderBlock expected_header_set2; 343 SpdyHeaderBlock expected_header_set2;
344 expected_header_set2["foo"] = "bar"; 344 expected_header_set2["foo"] = "bar";
345 expected_header_set2["spam"] = "eggs"; 345 expected_header_set2["spam"] = "eggs";
346 EXPECT_EQ(expected_header_set2, header_set2); 346 EXPECT_EQ(expected_header_set2, header_set2);
347 347
348 // Third header block: refer to most recently added entry. 348 // Third header block: refer to most recently added entry.
349 SpdyHeaderBlock header_set3 = DecodeBlockExpectingSuccess("\xbe"); 349 const SpdyHeaderBlock& header_set3 = DecodeBlockExpectingSuccess("\xbe");
350 SpdyHeaderBlock expected_header_set3; 350 SpdyHeaderBlock expected_header_set3;
351 expected_header_set3["spam"] = "eggs"; 351 expected_header_set3["spam"] = "eggs";
352 EXPECT_EQ(expected_header_set3, header_set3); 352 EXPECT_EQ(expected_header_set3, header_set3);
353 } 353 }
354 354
355 // Test a too-large indexed header. 355 // Test a too-large indexed header.
356 TEST_P(HpackDecoderTest, InvalidIndexedHeader) { 356 TEST_P(HpackDecoderTest, InvalidIndexedHeader) {
357 // High-bit set, and a prefix of one more than the number of static entries. 357 // High-bit set, and a prefix of one more than the number of static entries.
358 EXPECT_FALSE(DecodeHeaderBlock(StringPiece("\xbe", 1))); 358 EXPECT_FALSE(DecodeHeaderBlock(StringPiece("\xbe", 1)));
359 } 359 }
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 EXPECT_EQ(60u, decoder_peer_.header_table()->max_size()); 477 EXPECT_EQ(60u, decoder_peer_.header_table()->max_size());
478 } 478 }
479 } 479 }
480 480
481 // Decoding two valid encoded literal headers with no indexing should 481 // Decoding two valid encoded literal headers with no indexing should
482 // work. 482 // work.
483 TEST_P(HpackDecoderTest, LiteralHeaderNoIndexing) { 483 TEST_P(HpackDecoderTest, LiteralHeaderNoIndexing) {
484 // First header with indexed name, second header with string literal 484 // First header with indexed name, second header with string literal
485 // name. 485 // name.
486 const char input[] = "\x04\x0c/sample/path\x00\x06:path2\x0e/sample/path/2"; 486 const char input[] = "\x04\x0c/sample/path\x00\x06:path2\x0e/sample/path/2";
487 SpdyHeaderBlock header_set = 487 const SpdyHeaderBlock& header_set =
488 DecodeBlockExpectingSuccess(StringPiece(input, arraysize(input) - 1)); 488 DecodeBlockExpectingSuccess(StringPiece(input, arraysize(input) - 1));
489 489
490 SpdyHeaderBlock expected_header_set; 490 SpdyHeaderBlock expected_header_set;
491 expected_header_set[":path"] = "/sample/path"; 491 expected_header_set[":path"] = "/sample/path";
492 expected_header_set[":path2"] = "/sample/path/2"; 492 expected_header_set[":path2"] = "/sample/path/2";
493 EXPECT_EQ(expected_header_set, header_set); 493 EXPECT_EQ(expected_header_set, header_set);
494 } 494 }
495 495
496 // Decoding two valid encoded literal headers with incremental 496 // Decoding two valid encoded literal headers with incremental
497 // indexing and string literal names should work. 497 // indexing and string literal names should work.
498 TEST_P(HpackDecoderTest, LiteralHeaderIncrementalIndexing) { 498 TEST_P(HpackDecoderTest, LiteralHeaderIncrementalIndexing) {
499 const char input[] = "\x44\x0c/sample/path\x40\x06:path2\x0e/sample/path/2"; 499 const char input[] = "\x44\x0c/sample/path\x40\x06:path2\x0e/sample/path/2";
500 SpdyHeaderBlock header_set = 500 const SpdyHeaderBlock& header_set =
501 DecodeBlockExpectingSuccess(StringPiece(input, arraysize(input) - 1)); 501 DecodeBlockExpectingSuccess(StringPiece(input, arraysize(input) - 1));
502 502
503 SpdyHeaderBlock expected_header_set; 503 SpdyHeaderBlock expected_header_set;
504 expected_header_set[":path"] = "/sample/path"; 504 expected_header_set[":path"] = "/sample/path";
505 expected_header_set[":path2"] = "/sample/path/2"; 505 expected_header_set[":path2"] = "/sample/path/2";
506 EXPECT_EQ(expected_header_set, header_set); 506 EXPECT_EQ(expected_header_set, header_set);
507 } 507 }
508 508
509 TEST_P(HpackDecoderTest, LiteralHeaderWithIndexingInvalidNameIndex) { 509 TEST_P(HpackDecoderTest, LiteralHeaderWithIndexingInvalidNameIndex) {
510 decoder_.ApplyHeaderTableSizeSetting(0); 510 decoder_.ApplyHeaderTableSizeSetting(0);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 565
566 string encoded_header_set; 566 string encoded_header_set;
567 EXPECT_TRUE( 567 EXPECT_TRUE(
568 encoder.EncodeHeaderSet(expected_header_set, &encoded_header_set)); 568 encoder.EncodeHeaderSet(expected_header_set, &encoded_header_set));
569 569
570 EXPECT_TRUE(DecodeHeaderBlock(encoded_header_set)); 570 EXPECT_TRUE(DecodeHeaderBlock(encoded_header_set));
571 EXPECT_EQ(expected_header_set, decoded_block()); 571 EXPECT_EQ(expected_header_set, decoded_block());
572 } 572 }
573 573
574 TEST_P(HpackDecoderTest, SectionD4RequestHuffmanExamples) { 574 TEST_P(HpackDecoderTest, SectionD4RequestHuffmanExamples) {
575 SpdyHeaderBlock header_set;
576
577 // 82 | == Indexed - Add == 575 // 82 | == Indexed - Add ==
578 // | idx = 2 576 // | idx = 2
579 // | -> :method: GET 577 // | -> :method: GET
580 // 86 | == Indexed - Add == 578 // 86 | == Indexed - Add ==
581 // | idx = 6 579 // | idx = 6
582 // | -> :scheme: http 580 // | -> :scheme: http
583 // 84 | == Indexed - Add == 581 // 84 | == Indexed - Add ==
584 // | idx = 4 582 // | idx = 4
585 // | -> :path: / 583 // | -> :path: /
586 // 41 | == Literal indexed == 584 // 41 | == Literal indexed ==
587 // | Indexed name (idx = 1) 585 // | Indexed name (idx = 1)
588 // | :authority 586 // | :authority
589 // 8c | Literal value (len = 15) 587 // 8c | Literal value (len = 15)
590 // | Huffman encoded: 588 // | Huffman encoded:
591 // f1e3 c2e5 f23a 6ba0 ab90 f4ff | .....:k..... 589 // f1e3 c2e5 f23a 6ba0 ab90 f4ff | .....:k.....
592 // | Decoded: 590 // | Decoded:
593 // | www.example.com 591 // | www.example.com
594 // | -> :authority: www.example.com 592 // | -> :authority: www.example.com
595 string first = a2b_hex( 593 string first = a2b_hex("828684418cf1e3c2e5f23a6ba0ab90f4ff");
596 "828684418cf1e3c2e5f23a6ba0ab90f4" 594 const SpdyHeaderBlock& first_header_set = DecodeBlockExpectingSuccess(first);
597 "ff");
598 header_set = DecodeBlockExpectingSuccess(first);
599 595
600 EXPECT_THAT( 596 EXPECT_THAT(
601 header_set, 597 first_header_set,
602 ElementsAre(Pair(":method", "GET"), Pair(":scheme", "http"), 598 ElementsAre(Pair(":method", "GET"), Pair(":scheme", "http"),
603 Pair(":path", "/"), Pair(":authority", "www.example.com"))); 599 Pair(":path", "/"), Pair(":authority", "www.example.com")));
604 600
605 expectEntry(62, 57, ":authority", "www.example.com"); 601 expectEntry(62, 57, ":authority", "www.example.com");
606 EXPECT_EQ(57u, decoder_peer_.header_table()->size()); 602 EXPECT_EQ(57u, decoder_peer_.header_table()->size());
607 603
608 // 82 | == Indexed - Add == 604 // 82 | == Indexed - Add ==
609 // | idx = 2 605 // | idx = 2
610 // | -> :method: GET 606 // | -> :method: GET
611 // 86 | == Indexed - Add == 607 // 86 | == Indexed - Add ==
612 // | idx = 6 608 // | idx = 6
613 // | -> :scheme: http 609 // | -> :scheme: http
614 // 84 | == Indexed - Add == 610 // 84 | == Indexed - Add ==
615 // | idx = 4 611 // | idx = 4
616 // | -> :path: / 612 // | -> :path: /
617 // be | == Indexed - Add == 613 // be | == Indexed - Add ==
618 // | idx = 62 614 // | idx = 62
619 // | -> :authority: www.example.com 615 // | -> :authority: www.example.com
620 // 58 | == Literal indexed == 616 // 58 | == Literal indexed ==
621 // | Indexed name (idx = 24) 617 // | Indexed name (idx = 24)
622 // | cache-control 618 // | cache-control
623 // 86 | Literal value (len = 8) 619 // 86 | Literal value (len = 8)
624 // | Huffman encoded: 620 // | Huffman encoded:
625 // a8eb 1064 9cbf | ...d.. 621 // a8eb 1064 9cbf | ...d..
626 // | Decoded: 622 // | Decoded:
627 // | no-cache 623 // | no-cache
628 // | -> cache-control: no-cache 624 // | -> cache-control: no-cache
629 625
630 string second = a2b_hex("828684be5886a8eb10649cbf"); 626 string second = a2b_hex("828684be5886a8eb10649cbf");
631 header_set = DecodeBlockExpectingSuccess(second); 627 const SpdyHeaderBlock& second_header_set =
628 DecodeBlockExpectingSuccess(second);
632 629
633 EXPECT_THAT( 630 EXPECT_THAT(
634 header_set, 631 second_header_set,
635 ElementsAre(Pair(":method", "GET"), Pair(":scheme", "http"), 632 ElementsAre(Pair(":method", "GET"), Pair(":scheme", "http"),
636 Pair(":path", "/"), Pair(":authority", "www.example.com"), 633 Pair(":path", "/"), Pair(":authority", "www.example.com"),
637 Pair("cache-control", "no-cache"))); 634 Pair("cache-control", "no-cache")));
638 635
639 expectEntry(62, 53, "cache-control", "no-cache"); 636 expectEntry(62, 53, "cache-control", "no-cache");
640 expectEntry(63, 57, ":authority", "www.example.com"); 637 expectEntry(63, 57, ":authority", "www.example.com");
641 EXPECT_EQ(110u, decoder_peer_.header_table()->size()); 638 EXPECT_EQ(110u, decoder_peer_.header_table()->size());
642 639
643 // 82 | == Indexed - Add == 640 // 82 | == Indexed - Add ==
644 // | idx = 2 641 // | idx = 2
(...skipping 15 matching lines...) Expand all
660 // | custom-key 657 // | custom-key
661 // 89 | Literal value (len = 12) 658 // 89 | Literal value (len = 12)
662 // | Huffman encoded: 659 // | Huffman encoded:
663 // 25a8 49e9 5bb8 e8b4 bf | %.I.[.... 660 // 25a8 49e9 5bb8 e8b4 bf | %.I.[....
664 // | Decoded: 661 // | Decoded:
665 // | custom-value 662 // | custom-value
666 // | -> custom-key: custom-value 663 // | -> custom-key: custom-value
667 string third = a2b_hex( 664 string third = a2b_hex(
668 "828785bf408825a849e95ba97d7f89" 665 "828785bf408825a849e95ba97d7f89"
669 "25a849e95bb8e8b4bf"); 666 "25a849e95bb8e8b4bf");
670 header_set = DecodeBlockExpectingSuccess(third); 667 const SpdyHeaderBlock& third_header_set = DecodeBlockExpectingSuccess(third);
671 668
672 EXPECT_THAT(header_set, 669 EXPECT_THAT(third_header_set,
673 ElementsAre(Pair(":method", "GET"), Pair(":scheme", "https"), 670 ElementsAre(Pair(":method", "GET"), Pair(":scheme", "https"),
674 Pair(":path", "/index.html"), 671 Pair(":path", "/index.html"),
675 Pair(":authority", "www.example.com"), 672 Pair(":authority", "www.example.com"),
676 Pair("custom-key", "custom-value"))); 673 Pair("custom-key", "custom-value")));
677 674
678 expectEntry(62, 54, "custom-key", "custom-value"); 675 expectEntry(62, 54, "custom-key", "custom-value");
679 expectEntry(63, 53, "cache-control", "no-cache"); 676 expectEntry(63, 53, "cache-control", "no-cache");
680 expectEntry(64, 57, ":authority", "www.example.com"); 677 expectEntry(64, 57, ":authority", "www.example.com");
681 EXPECT_EQ(164u, decoder_peer_.header_table()->size()); 678 EXPECT_EQ(164u, decoder_peer_.header_table()->size());
682 } 679 }
683 680
684 TEST_P(HpackDecoderTest, SectionD6ResponseHuffmanExamples) { 681 TEST_P(HpackDecoderTest, SectionD6ResponseHuffmanExamples) {
685 SpdyHeaderBlock header_set;
686 decoder_.ApplyHeaderTableSizeSetting(256); 682 decoder_.ApplyHeaderTableSizeSetting(256);
687 683
688 // 48 | == Literal indexed == 684 // 48 | == Literal indexed ==
689 // | Indexed name (idx = 8) 685 // | Indexed name (idx = 8)
690 // | :status 686 // | :status
691 // 82 | Literal value (len = 3) 687 // 82 | Literal value (len = 3)
692 // | Huffman encoded: 688 // | Huffman encoded:
693 // 6402 | d. 689 // 6402 | d.
694 // | Decoded: 690 // | Decoded:
695 // | 302 691 // | 302
(...skipping 29 matching lines...) Expand all
725 // | Decoded: 721 // | Decoded:
726 // | https://www.example.com 722 // | https://www.example.com
727 // | -> location: https://www.e 723 // | -> location: https://www.e
728 // | xample.com 724 // | xample.com
729 725
730 string first = a2b_hex( 726 string first = a2b_hex(
731 "488264025885aec3771a4b6196d07abe" 727 "488264025885aec3771a4b6196d07abe"
732 "941054d444a8200595040b8166e082a6" 728 "941054d444a8200595040b8166e082a6"
733 "2d1bff6e919d29ad171863c78f0b97c8" 729 "2d1bff6e919d29ad171863c78f0b97c8"
734 "e9ae82ae43d3"); 730 "e9ae82ae43d3");
735 header_set = DecodeBlockExpectingSuccess(first); 731 const SpdyHeaderBlock& first_header_set = DecodeBlockExpectingSuccess(first);
736 732
737 EXPECT_THAT( 733 EXPECT_THAT(
738 header_set, 734 first_header_set,
739 ElementsAre(Pair(":status", "302"), Pair("cache-control", "private"), 735 ElementsAre(Pair(":status", "302"), Pair("cache-control", "private"),
740 Pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"), 736 Pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"),
741 Pair("location", "https://www.example.com"))); 737 Pair("location", "https://www.example.com")));
742 738
743 expectEntry(62, 63, "location", "https://www.example.com"); 739 expectEntry(62, 63, "location", "https://www.example.com");
744 expectEntry(63, 65, "date", "Mon, 21 Oct 2013 20:13:21 GMT"); 740 expectEntry(63, 65, "date", "Mon, 21 Oct 2013 20:13:21 GMT");
745 expectEntry(64, 52, "cache-control", "private"); 741 expectEntry(64, 52, "cache-control", "private");
746 expectEntry(65, 42, ":status", "302"); 742 expectEntry(65, 42, ":status", "302");
747 EXPECT_EQ(222u, decoder_peer_.header_table()->size()); 743 EXPECT_EQ(222u, decoder_peer_.header_table()->size());
748 744
(...skipping 12 matching lines...) Expand all
761 // | -> cache-control: private 757 // | -> cache-control: private
762 // c0 | == Indexed - Add == 758 // c0 | == Indexed - Add ==
763 // | idx = 64 759 // | idx = 64
764 // | -> date: Mon, 21 Oct 2013 760 // | -> date: Mon, 21 Oct 2013
765 // | 20:13:21 GMT 761 // | 20:13:21 GMT
766 // bf | == Indexed - Add == 762 // bf | == Indexed - Add ==
767 // | idx = 63 763 // | idx = 63
768 // | -> location: 764 // | -> location:
769 // | https://www.example.com 765 // | https://www.example.com
770 string second = a2b_hex("4883640effc1c0bf"); 766 string second = a2b_hex("4883640effc1c0bf");
771 header_set = DecodeBlockExpectingSuccess(second); 767 const SpdyHeaderBlock& second_header_set =
768 DecodeBlockExpectingSuccess(second);
772 769
773 EXPECT_THAT( 770 EXPECT_THAT(
774 header_set, 771 second_header_set,
775 ElementsAre(Pair(":status", "307"), Pair("cache-control", "private"), 772 ElementsAre(Pair(":status", "307"), Pair("cache-control", "private"),
776 Pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"), 773 Pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"),
777 Pair("location", "https://www.example.com"))); 774 Pair("location", "https://www.example.com")));
778 775
779 expectEntry(62, 42, ":status", "307"); 776 expectEntry(62, 42, ":status", "307");
780 expectEntry(63, 63, "location", "https://www.example.com"); 777 expectEntry(63, 63, "location", "https://www.example.com");
781 expectEntry(64, 65, "date", "Mon, 21 Oct 2013 20:13:21 GMT"); 778 expectEntry(64, 65, "date", "Mon, 21 Oct 2013 20:13:21 GMT");
782 expectEntry(65, 52, "cache-control", "private"); 779 expectEntry(65, 52, "cache-control", "private");
783 EXPECT_EQ(222u, decoder_peer_.header_table()->size()); 780 EXPECT_EQ(222u, decoder_peer_.header_table()->size());
784 781
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 // | - evict: :status: 307 831 // | - evict: :status: 307
835 // | -> set-cookie: foo=ASDJKHQ 832 // | -> set-cookie: foo=ASDJKHQ
836 // | KBZXOQWEOPIUAXQWEOIU; 833 // | KBZXOQWEOPIUAXQWEOIU;
837 // | max-age=3600; version=1 834 // | max-age=3600; version=1
838 string third = a2b_hex( 835 string third = a2b_hex(
839 "88c16196d07abe941054d444a8200595" 836 "88c16196d07abe941054d444a8200595"
840 "040b8166e084a62d1bffc05a839bd9ab" 837 "040b8166e084a62d1bffc05a839bd9ab"
841 "77ad94e7821dd7f2e6c7b335dfdfcd5b" 838 "77ad94e7821dd7f2e6c7b335dfdfcd5b"
842 "3960d5af27087f3672c1ab270fb5291f" 839 "3960d5af27087f3672c1ab270fb5291f"
843 "9587316065c003ed4ee5b1063d5007"); 840 "9587316065c003ed4ee5b1063d5007");
844 header_set = DecodeBlockExpectingSuccess(third); 841 const SpdyHeaderBlock& third_header_set = DecodeBlockExpectingSuccess(third);
845 842
846 EXPECT_THAT( 843 EXPECT_THAT(
847 header_set, 844 third_header_set,
848 ElementsAre(Pair(":status", "200"), Pair("cache-control", "private"), 845 ElementsAre(Pair(":status", "200"), Pair("cache-control", "private"),
849 Pair("date", "Mon, 21 Oct 2013 20:13:22 GMT"), 846 Pair("date", "Mon, 21 Oct 2013 20:13:22 GMT"),
850 Pair("location", "https://www.example.com"), 847 Pair("location", "https://www.example.com"),
851 Pair("content-encoding", "gzip"), 848 Pair("content-encoding", "gzip"),
852 Pair("set-cookie", 849 Pair("set-cookie",
853 "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU;" 850 "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU;"
854 " max-age=3600; version=1"))); 851 " max-age=3600; version=1")));
855 852
856 expectEntry(62, 98, "set-cookie", 853 expectEntry(62, 98, "set-cookie",
857 "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU;" 854 "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU;"
858 " max-age=3600; version=1"); 855 " max-age=3600; version=1");
859 expectEntry(63, 52, "content-encoding", "gzip"); 856 expectEntry(63, 52, "content-encoding", "gzip");
860 expectEntry(64, 65, "date", "Mon, 21 Oct 2013 20:13:22 GMT"); 857 expectEntry(64, 65, "date", "Mon, 21 Oct 2013 20:13:22 GMT");
861 EXPECT_EQ(215u, decoder_peer_.header_table()->size()); 858 EXPECT_EQ(215u, decoder_peer_.header_table()->size());
862 } 859 }
863 860
864 } // namespace 861 } // namespace
865 } // namespace test 862 } // namespace test
866 } // namespace net 863 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/buffered_spdy_framer_unittest.cc ('k') | net/spdy/spdy_framer_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698