| OLD | NEW |
| 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_decoder.h" | 5 #include "net/spdy/hpack_decoder.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 TEST_F(HpackDecoderTest, DecodeNextNameLiteral) { | 183 TEST_F(HpackDecoderTest, DecodeNextNameLiteral) { |
| 184 HpackInputStream input_stream(kLiteralBound, StringPiece("\x00\x04name", 6)); | 184 HpackInputStream input_stream(kLiteralBound, StringPiece("\x00\x04name", 6)); |
| 185 | 185 |
| 186 StringPiece string_piece; | 186 StringPiece string_piece; |
| 187 EXPECT_TRUE(decoder_peer_.DecodeNextName(&input_stream, &string_piece)); | 187 EXPECT_TRUE(decoder_peer_.DecodeNextName(&input_stream, &string_piece)); |
| 188 EXPECT_EQ("name", string_piece); | 188 EXPECT_EQ("name", string_piece); |
| 189 EXPECT_FALSE(input_stream.HasMoreData()); | 189 EXPECT_FALSE(input_stream.HasMoreData()); |
| 190 } | 190 } |
| 191 | 191 |
| 192 TEST_F(HpackDecoderTest, DecodeNextNameLiteralWithHuffmanEncoding) { | 192 TEST_F(HpackDecoderTest, DecodeNextNameLiteralWithHuffmanEncoding) { |
| 193 string input = a2b_hex("0088571c5cdb737b2faf"); | 193 string input = a2b_hex("008825a849e95ba97d7f"); |
| 194 HpackInputStream input_stream(kLiteralBound, input); | 194 HpackInputStream input_stream(kLiteralBound, input); |
| 195 | 195 |
| 196 StringPiece string_piece; | 196 StringPiece string_piece; |
| 197 EXPECT_TRUE(decoder_peer_.DecodeNextName(&input_stream, &string_piece)); | 197 EXPECT_TRUE(decoder_peer_.DecodeNextName(&input_stream, &string_piece)); |
| 198 EXPECT_EQ("custom-key", string_piece); | 198 EXPECT_EQ("custom-key", string_piece); |
| 199 EXPECT_FALSE(input_stream.HasMoreData()); | 199 EXPECT_FALSE(input_stream.HasMoreData()); |
| 200 } | 200 } |
| 201 | 201 |
| 202 // Decoding an encoded name with a valid index should work. | 202 // Decoding an encoded name with a valid index should work. |
| 203 TEST_F(HpackDecoderTest, DecodeNextNameIndexed) { | 203 TEST_F(HpackDecoderTest, DecodeNextNameIndexed) { |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 // | idx = 7 | 388 // | idx = 7 |
| 389 // | -> :scheme: http | 389 // | -> :scheme: http |
| 390 // 86 | == Indexed - Add == | 390 // 86 | == Indexed - Add == |
| 391 // | idx = 6 | 391 // | idx = 6 |
| 392 // | -> :path: / | 392 // | -> :path: / |
| 393 // 44 | == Literal indexed == | 393 // 44 | == Literal indexed == |
| 394 // | Indexed name (idx = 4) | 394 // | Indexed name (idx = 4) |
| 395 // | :authority | 395 // | :authority |
| 396 // 8c | Literal value (len = 15) | 396 // 8c | Literal value (len = 15) |
| 397 // | Huffman encoded: | 397 // | Huffman encoded: |
| 398 // e7cf 9beb e89b 6fb1 6fa9 b6ff | ......o.o... | 398 // f1e3 c2e5 f23a 6ba0 ab90 f4ff | .....:k..... |
| 399 // | Decoded: | 399 // | Decoded: |
| 400 // | www.example.com | 400 // | www.example.com |
| 401 // | -> :authority: www.example.com | 401 // | -> :authority: www.example.com |
| 402 string first = a2b_hex("828786448ce7cf9bebe89b6fb16fa9b6ff"); | 402 string first = a2b_hex("828786448cf1e3c2e5f23a6ba0ab90f4" |
| 403 "ff"); |
| 403 header_set = DecodeBlockExpectingSuccess(first); | 404 header_set = DecodeBlockExpectingSuccess(first); |
| 404 | 405 |
| 405 EXPECT_THAT(header_set, ElementsAre( | 406 EXPECT_THAT(header_set, ElementsAre( |
| 406 Pair(":authority", "www.example.com"), | 407 Pair(":authority", "www.example.com"), |
| 407 Pair(":method", "GET"), | 408 Pair(":method", "GET"), |
| 408 Pair(":path", "/"), | 409 Pair(":path", "/"), |
| 409 Pair(":scheme", "http"))); | 410 Pair(":scheme", "http"))); |
| 410 | 411 |
| 411 expectEntry(1, 57, ":authority", "www.example.com"); | 412 expectEntry(1, 57, ":authority", "www.example.com"); |
| 412 expectEntry(2, 38, ":path", "/"); | 413 expectEntry(2, 38, ":path", "/"); |
| 413 expectEntry(3, 43, ":scheme", "http"); | 414 expectEntry(3, 43, ":scheme", "http"); |
| 414 expectEntry(4, 42, ":method", "GET"); | 415 expectEntry(4, 42, ":method", "GET"); |
| 415 expectStaticEntry(5); | 416 expectStaticEntry(5); |
| 416 EXPECT_EQ(180u, decoder_peer_.header_table()->size()); | 417 EXPECT_EQ(180u, decoder_peer_.header_table()->size()); |
| 417 | 418 |
| 418 // 5c | == Literal indexed == | 419 // 5c | == Literal indexed == |
| 419 // | Indexed name (idx = 28) | 420 // | Indexed name (idx = 28) |
| 420 // | cache-control | 421 // | cache-control |
| 421 // 86 | Literal value (len = 8) | 422 // 86 | Literal value (len = 8) |
| 422 // | Huffman encoded: | 423 // | Huffman encoded: |
| 423 // b9b9 9495 56bf | ....V. | 424 // a8eb 1064 9cbf | ...d.. |
| 424 // | Decoded: | 425 // | Decoded: |
| 425 // | no-cache | 426 // | no-cache |
| 426 // | -> cache-control: no-cache | 427 // | -> cache-control: no-cache |
| 427 string second = a2b_hex("5c86b9b9949556bf"); | 428 string second = a2b_hex("5c86a8eb10649cbf"); |
| 428 header_set = DecodeBlockExpectingSuccess(second); | 429 header_set = DecodeBlockExpectingSuccess(second); |
| 429 | 430 |
| 430 EXPECT_THAT(header_set, ElementsAre( | 431 EXPECT_THAT(header_set, ElementsAre( |
| 431 Pair(":authority", "www.example.com"), | 432 Pair(":authority", "www.example.com"), |
| 432 Pair(":method", "GET"), | 433 Pair(":method", "GET"), |
| 433 Pair(":path", "/"), | 434 Pair(":path", "/"), |
| 434 Pair(":scheme", "http"), | 435 Pair(":scheme", "http"), |
| 435 Pair("cache-control", "no-cache"))); | 436 Pair("cache-control", "no-cache"))); |
| 436 | 437 |
| 437 expectEntry(1, 53, "cache-control", "no-cache"); | 438 expectEntry(1, 53, "cache-control", "no-cache"); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 453 // | -> :scheme: https | 454 // | -> :scheme: https |
| 454 // 8b | == Indexed - Add == | 455 // 8b | == Indexed - Add == |
| 455 // | idx = 11 | 456 // | idx = 11 |
| 456 // | -> :path: /index.html | 457 // | -> :path: /index.html |
| 457 // 84 | == Indexed - Add == | 458 // 84 | == Indexed - Add == |
| 458 // | idx = 4 | 459 // | idx = 4 |
| 459 // | -> :authority: www.example.com | 460 // | -> :authority: www.example.com |
| 460 // 40 | == Literal indexed == | 461 // 40 | == Literal indexed == |
| 461 // 88 | Literal name (len = 10) | 462 // 88 | Literal name (len = 10) |
| 462 // | Huffman encoded: | 463 // | Huffman encoded: |
| 463 // 571c 5cdb 737b 2faf | W.\.s{/. | 464 // 25a8 49e9 5ba9 7d7f | %.I.[.}. |
| 464 // | Decoded: | 465 // | Decoded: |
| 465 // | custom-key | 466 // | custom-key |
| 466 // 89 | Literal value (len = 12) | 467 // 89 | Literal value (len = 12) |
| 467 // | Huffman encoded: | 468 // | Huffman encoded: |
| 468 // 571c 5cdb 7372 4d9c 57 | W.\.srM.W | 469 // 25a8 49e9 5bb8 e8b4 bf | %.I.[.... |
| 469 // | Decoded: | 470 // | Decoded: |
| 470 // | custom-value | 471 // | custom-value |
| 471 // | -> custom-key: custom-value | 472 // | -> custom-key: custom-value |
| 472 string third = a2b_hex("30858c8b844088571c5cdb737b2faf89" | 473 string third = a2b_hex("30858c8b84408825a849e95ba97d7f89" |
| 473 "571c5cdb73724d9c57"); | 474 "25a849e95bb8e8b4bf"); |
| 474 header_set = DecodeBlockExpectingSuccess(third); | 475 header_set = DecodeBlockExpectingSuccess(third); |
| 475 | 476 |
| 476 EXPECT_THAT(header_set, ElementsAre( | 477 EXPECT_THAT(header_set, ElementsAre( |
| 477 Pair(":authority", "www.example.com"), | 478 Pair(":authority", "www.example.com"), |
| 478 Pair(":method", "GET"), | 479 Pair(":method", "GET"), |
| 479 Pair(":path", "/index.html"), | 480 Pair(":path", "/index.html"), |
| 480 Pair(":scheme", "https"), | 481 Pair(":scheme", "https"), |
| 481 Pair("custom-key", "custom-value"))); | 482 Pair("custom-key", "custom-value"))); |
| 482 | 483 |
| 483 expectEntry(1, 54, "custom-key", "custom-value"); | 484 expectEntry(1, 54, "custom-key", "custom-value"); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 494 | 495 |
| 495 TEST_F(HpackDecoderTest, SectionD5ResponseHuffmanExamples) { | 496 TEST_F(HpackDecoderTest, SectionD5ResponseHuffmanExamples) { |
| 496 std::map<string, string> header_set; | 497 std::map<string, string> header_set; |
| 497 decoder_.ApplyHeaderTableSizeSetting(256); | 498 decoder_.ApplyHeaderTableSizeSetting(256); |
| 498 | 499 |
| 499 // 48 | == Literal indexed == | 500 // 48 | == Literal indexed == |
| 500 // | Indexed name (idx = 8) | 501 // | Indexed name (idx = 8) |
| 501 // | :status | 502 // | :status |
| 502 // 82 | Literal value (len = 3) | 503 // 82 | Literal value (len = 3) |
| 503 // | Huffman encoded: | 504 // | Huffman encoded: |
| 504 // 4017 | @. | 505 // 6402 | d. |
| 505 // | Decoded: | 506 // | Decoded: |
| 506 // | 302 | 507 // | 302 |
| 507 // | -> :status: 302 | 508 // | -> :status: 302 |
| 508 // 59 | == Literal indexed == | 509 // 59 | == Literal indexed == |
| 509 // | Indexed name (idx = 25) | 510 // | Indexed name (idx = 25) |
| 510 // | cache-control | 511 // | cache-control |
| 511 // 85 | Literal value (len = 7) | 512 // 85 | Literal value (len = 7) |
| 512 // | Huffman encoded: | 513 // | Huffman encoded: |
| 513 // bf06 724b 97 | ..rK. | 514 // aec3 771a 4b | ..w.K |
| 514 // | Decoded: | 515 // | Decoded: |
| 515 // | private | 516 // | private |
| 516 // | -> cache-control: private | 517 // | -> cache-control: private |
| 517 // 63 | == Literal indexed == | 518 // 63 | == Literal indexed == |
| 518 // | Indexed name (idx = 35) | 519 // | Indexed name (idx = 35) |
| 519 // | date | 520 // | date |
| 520 // 93 | Literal value (len = 29) | 521 // 96 | Literal value (len = 29) |
| 521 // | Huffman encoded: | 522 // | Huffman encoded: |
| 522 // d6db b298 84de 2a71 8805 0620 9851 3109 | ......*q... .Q1. | 523 // d07a be94 1054 d444 a820 0595 040b 8166 | .z...T.D. .....f |
| 523 // b56b a3 | .k. | 524 // e082 a62d 1bff | ...-.. |
| 524 // | Decoded: | 525 // | Decoded: |
| 525 // | Mon, 21 Oct 2013 20:13:21 | 526 // | Mon, 21 Oct 2013 20:13:21 |
| 526 // | GMT | 527 // | GMT |
| 527 // | -> date: Mon, 21 Oct 2013 | 528 // | -> date: Mon, 21 Oct 2013 |
| 528 // | 20:13:21 GMT | 529 // | 20:13:21 GMT |
| 529 // 71 | == Literal indexed == | 530 // 71 | == Literal indexed == |
| 530 // | Indexed name (idx = 49) | 531 // | Indexed name (idx = 49) |
| 531 // | location | 532 // | location |
| 532 // 91 | Literal value (len = 23) | 533 // 91 | Literal value (len = 23) |
| 533 // | Huffman encoded: | 534 // | Huffman encoded: |
| 534 // adce bf19 8e7e 7cf9 bebe 89b6 fb16 fa9b | ......|......... | 535 // 9d29 ad17 1863 c78f 0b97 c8e9 ae82 ae43 | .)...c.........C |
| 535 // 6f | o | 536 // d3 | . |
| 536 // | Decoded: | 537 // | Decoded: |
| 537 // | https://www.example.com | 538 // | https://www.example.com |
| 538 // | -> location: https://www.e | 539 // | -> location: https://www.e |
| 539 // | xample.com | 540 // | xample.com |
| 540 string first = a2b_hex("488240175985bf06724b976393d6dbb2" | 541 string first = a2b_hex("488264025985aec3771a4b6396d07abe" |
| 541 "9884de2a718805062098513109b56ba3" | 542 "941054d444a8200595040b8166e082a6" |
| 542 "7191adcebf198e7e7cf9bebe89b6fb16" | 543 "2d1bff71919d29ad171863c78f0b97c8" |
| 543 "fa9b6f"); | 544 "e9ae82ae43d3"); |
| 544 header_set = DecodeBlockExpectingSuccess(first); | 545 header_set = DecodeBlockExpectingSuccess(first); |
| 545 | 546 |
| 546 EXPECT_THAT(header_set, ElementsAre( | 547 EXPECT_THAT(header_set, ElementsAre( |
| 547 Pair(":status", "302"), | 548 Pair(":status", "302"), |
| 548 Pair("cache-control", "private"), | 549 Pair("cache-control", "private"), |
| 549 Pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"), | 550 Pair("date", "Mon, 21 Oct 2013 20:13:21 GMT"), |
| 550 Pair("location", "https://www.example.com"))); | 551 Pair("location", "https://www.example.com"))); |
| 551 | 552 |
| 552 expectEntry(1, 63, "location", "https://www.example.com"); | 553 expectEntry(1, 63, "location", "https://www.example.com"); |
| 553 expectEntry(2, 65, "date", "Mon, 21 Oct 2013 20:13:21 GMT"); | 554 expectEntry(2, 65, "date", "Mon, 21 Oct 2013 20:13:21 GMT"); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 578 | 579 |
| 579 // 84 | == Indexed - Remove == | 580 // 84 | == Indexed - Remove == |
| 580 // | idx = 4 | 581 // | idx = 4 |
| 581 // | -> cache-control: private | 582 // | -> cache-control: private |
| 582 // 84 | == Indexed - Add == | 583 // 84 | == Indexed - Add == |
| 583 // | idx = 4 | 584 // | idx = 4 |
| 584 // | -> cache-control: private | 585 // | -> cache-control: private |
| 585 // 43 | == Literal indexed == | 586 // 43 | == Literal indexed == |
| 586 // | Indexed name (idx = 3) | 587 // | Indexed name (idx = 3) |
| 587 // | date | 588 // | date |
| 588 // 93 | Literal value (len = 29) | 589 // 96 | Literal value (len = 29) |
| 589 // | Huffman encoded: | 590 // | Huffman encoded: |
| 590 // d6db b298 84de 2a71 8805 0620 9851 3111 | ......*q... .Q1. | 591 // d07a be94 1054 d444 a820 0595 040b 8166 | .z...T.D. .....f |
| 591 // b56b a3 | .k. | 592 // e084 a62d 1bff | ...-.. |
| 592 // | Decoded: | 593 // | Decoded: |
| 593 // | Mon, 21 Oct 2013 20:13:22 | 594 // | Mon, 21 Oct 2013 20:13:22 |
| 594 // | GMT | 595 // | GMT |
| 595 // | - evict: cache-control: pr | 596 // | - evict: cache-control: pr |
| 596 // | ivate | 597 // | ivate |
| 597 // | -> date: Mon, 21 Oct 2013 | 598 // | -> date: Mon, 21 Oct 2013 |
| 598 // | 20:13:22 GMT | 599 // | 20:13:22 GMT |
| 599 // 5e | == Literal indexed == | 600 // 5e | == Literal indexed == |
| 600 // | Indexed name (idx = 30) | 601 // | Indexed name (idx = 30) |
| 601 // | content-encoding | 602 // | content-encoding |
| 602 // 84 | Literal value (len = 4) | 603 // 83 | Literal value (len = 4) |
| 603 // | Huffman encoded: | 604 // | Huffman encoded: |
| 604 // abdd 97ff | .... | 605 // 9bd9 ab | ... |
| 605 // | Decoded: | 606 // | Decoded: |
| 606 // | gzip | 607 // | gzip |
| 607 // | - evict: date: Mon, 21 Oct | 608 // | - evict: date: Mon, 21 Oct |
| 608 // | 2013 20:13:21 GMT | 609 // | 2013 20:13:21 GMT |
| 609 // | -> content-encoding: gzip | 610 // | -> content-encoding: gzip |
| 610 // 84 | == Indexed - Remove == | 611 // 84 | == Indexed - Remove == |
| 611 // | idx = 4 | 612 // | idx = 4 |
| 612 // | -> location: https://www.e | 613 // | -> location: https://www.e |
| 613 // | xample.com | 614 // | xample.com |
| 614 // 84 | == Indexed - Add == | 615 // 84 | == Indexed - Add == |
| 615 // | idx = 4 | 616 // | idx = 4 |
| 616 // | -> location: https://www.e | 617 // | -> location: https://www.e |
| 617 // | xample.com | 618 // | xample.com |
| 618 // 83 | == Indexed - Remove == | 619 // 83 | == Indexed - Remove == |
| 619 // | idx = 3 | 620 // | idx = 3 |
| 620 // | -> :status: 200 | 621 // | -> :status: 200 |
| 621 // 83 | == Indexed - Add == | 622 // 83 | == Indexed - Add == |
| 622 // | idx = 3 | 623 // | idx = 3 |
| 623 // | -> :status: 200 | 624 // | -> :status: 200 |
| 624 // 7b | == Literal indexed == | 625 // 7b | == Literal indexed == |
| 625 // | Indexed name (idx = 59) | 626 // | Indexed name (idx = 59) |
| 626 // | set-cookie | 627 // | set-cookie |
| 627 // b1 | Literal value (len = 56) | 628 // ad | Literal value (len = 56) |
| 628 // | Huffman encoded: | 629 // | Huffman encoded: |
| 629 // e0d6 cf9f 6e8f 9fd3 e5f6 fa76 fefd 3c7e | ....n......v.... | 630 // 94e7 821d d7f2 e6c7 b335 dfdf cd5b 3960 | .........5...[9` |
| 630 // df9e ff1f 2f0f 3cfe 9f6f cf7f 8f87 9f61 | ..../....o.....a | 631 // d5af 2708 7f36 72c1 ab27 0fb5 291f 9587 | ..'..6r..'..)... |
| 631 // ad4f 4cc9 a973 a220 0ec3 725e 18b1 b74e | .OL..s. ..r^...N | 632 // 3160 65c0 03ed 4ee5 b106 3d50 07 | 1`e...N...=P. |
| 632 // 3f | ? | |
| 633 // | Decoded: | 633 // | Decoded: |
| 634 // | foo=ASDJKHQKBZXOQWEOPIUAXQ | 634 // | foo=ASDJKHQKBZXOQWEOPIUAXQ |
| 635 // | WEOIU; max-age=3600; versi | 635 // | WEOIU; max-age=3600; versi |
| 636 // | on=1 | 636 // | on=1 |
| 637 // | - evict: location: https:/ | 637 // | - evict: location: https:/ |
| 638 // | /www.example.com | 638 // | /www.example.com |
| 639 // | - evict: :status: 200 | 639 // | - evict: :status: 200 |
| 640 // | -> set-cookie: foo=ASDJKHQ | 640 // | -> set-cookie: foo=ASDJKHQ |
| 641 // | KBZXOQWEOPIUAXQWEOIU; ma | 641 // | KBZXOQWEOPIUAXQWEOIU; ma |
| 642 // | x-age=3600; version=1 | 642 // | x-age=3600; version=1 |
| 643 string third = a2b_hex("84844393d6dbb29884de2a7188050620" | 643 string third = a2b_hex("84844396d07abe941054d444a8200595" |
| 644 "98513111b56ba35e84abdd97ff848483" | 644 "040b8166e084a62d1bff5e839bd9ab84" |
| 645 "837bb1e0d6cf9f6e8f9fd3e5f6fa76fe" | 645 "8483837bad94e7821dd7f2e6c7b335df" |
| 646 "fd3c7edf9eff1f2f0f3cfe9f6fcf7f8f" | 646 "dfcd5b3960d5af27087f3672c1ab270f" |
| 647 "879f61ad4f4cc9a973a2200ec3725e18" | 647 "b5291f9587316065c003ed4ee5b1063d" |
| 648 "b1b74e3f"); | 648 "5007"); |
| 649 header_set = DecodeBlockExpectingSuccess(third); | 649 header_set = DecodeBlockExpectingSuccess(third); |
| 650 | 650 |
| 651 EXPECT_THAT(header_set, ElementsAre( | 651 EXPECT_THAT(header_set, ElementsAre( |
| 652 Pair(":status", "200"), | 652 Pair(":status", "200"), |
| 653 Pair("cache-control", "private"), | 653 Pair("cache-control", "private"), |
| 654 Pair("content-encoding", "gzip"), | 654 Pair("content-encoding", "gzip"), |
| 655 Pair("date", "Mon, 21 Oct 2013 20:13:22 GMT"), | 655 Pair("date", "Mon, 21 Oct 2013 20:13:22 GMT"), |
| 656 Pair("location", "https://www.example.com"), | 656 Pair("location", "https://www.example.com"), |
| 657 Pair("set-cookie", "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU;" | 657 Pair("set-cookie", "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU;" |
| 658 " max-age=3600; version=1"))); | 658 " max-age=3600; version=1"))); |
| 659 | 659 |
| 660 expectEntry(1, 98, "set-cookie", "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU;" | 660 expectEntry(1, 98, "set-cookie", "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU;" |
| 661 " max-age=3600; version=1"); | 661 " max-age=3600; version=1"); |
| 662 expectEntry(2, 52, "content-encoding", "gzip"); | 662 expectEntry(2, 52, "content-encoding", "gzip"); |
| 663 expectEntry(3, 65, "date", "Mon, 21 Oct 2013 20:13:22 GMT"); | 663 expectEntry(3, 65, "date", "Mon, 21 Oct 2013 20:13:22 GMT"); |
| 664 expectStaticEntry(4); | 664 expectStaticEntry(4); |
| 665 EXPECT_EQ(215u, decoder_peer_.header_table()->size()); | 665 EXPECT_EQ(215u, decoder_peer_.header_table()->size()); |
| 666 } | 666 } |
| 667 | 667 |
| 668 } // namespace | 668 } // namespace |
| 669 | 669 |
| 670 } // namespace net | 670 } // namespace net |
| OLD | NEW |