Add new HTTP/2 and HPACK decoder in net/http2/.

Desktop / Chromium - bnc [chromium.org] - 5 December 2016 18:11 UTC

A follow-up CL will add flags and new classes to net/spdy that will benefit from this new implementation.

This CL lands all server changes in the http2 directory up to 129999723 by jamessynge.

BUG=488484

Review-Url: https://codereview.chromium.org/2293613002 Cr-Commit-Position: refs/heads/master@{#436466}

167743e Add new HTTP/2 and HPACK decoder in net/http2/.
net/http2/decoder/decode_buffer.cc | 90 ++
net/http2/decoder/decode_buffer.h | 289 ++++++
net/http2/decoder/decode_buffer_test.cc | 406 +++++++++
net/http2/decoder/decode_http2_structures.cc | 355 ++++++++
net/http2/decoder/decode_http2_structures.h | 94 ++
net/http2/decoder/decode_http2_structures_test.cc | 542 +++++++++++
net/http2/decoder/decode_status.cc | 27 +
net/http2/decoder/decode_status.h | 32 +
net/http2/decoder/frame_decoder_state.cc | 81 ++
net/http2/decoder/frame_decoder_state.h | 252 ++++++
net/http2/decoder/frame_decoder_state_test_util.cc | 34 +
net/http2/decoder/frame_decoder_state_test_util.h | 36 +
net/http2/decoder/frame_parts.cc | 527 +++++++++++
net/http2/decoder/frame_parts.h | 176 ++++
net/http2/decoder/frame_parts_collector.cc | 112 +++
net/http2/decoder/frame_parts_collector.h | 116 +++
.../decoder/frame_parts_collector_listener.cc | 230 +++++
net/http2/decoder/frame_parts_collector_listener.h | 83 ++
net/http2/decoder/http2_frame_decoder.cc | 426 +++++++++
net/http2/decoder/http2_frame_decoder.h | 203 +++++
net/http2/decoder/http2_frame_decoder_listener.cc | 14 +
net/http2/decoder/http2_frame_decoder_listener.h | 356 ++++++++
.../http2_frame_decoder_listener_test_util.cc | 485 ++++++++++
.../http2_frame_decoder_listener_test_util.h | 141 +++
net/http2/decoder/http2_frame_decoder_test.cc | 946 ++++++++++++++++++++
net/http2/decoder/http2_structure_decoder.cc | 90 ++
net/http2/decoder/http2_structure_decoder.h | 129 +++
net/http2/decoder/http2_structure_decoder_test.cc | 512 +++++++++++
.../decoder/http2_structure_decoder_test_util.h | 30 +
.../payload_decoders/altsvc_payload_decoder.cc | 143 +++
.../payload_decoders/altsvc_payload_decoder.h | 64 ++
.../altsvc_payload_decoder_test.cc | 133 +++
.../continuation_payload_decoder.cc | 58 ++
.../continuation_payload_decoder.h | 31 +
.../continuation_payload_decoder_test.cc | 94 ++
.../payload_decoders/data_payload_decoder.cc | 123 +++
.../payload_decoders/data_payload_decoder.h | 54 ++
.../payload_decoders/data_payload_decoder_test.cc | 120 +++
.../payload_decoders/goaway_payload_decoder.cc | 118 +++
.../payload_decoders/goaway_payload_decoder.h | 66 ++
.../goaway_payload_decoder_test.cc | 122 +++
.../payload_decoders/headers_payload_decoder.cc | 173 ++++
.../payload_decoders/headers_payload_decoder.h | 67 ++
.../headers_payload_decoder_test.cc | 173 ++++
.../payload_decoder_base_test_util.cc | 98 ++
.../payload_decoder_base_test_util.h | 486 ++++++++++
.../payload_decoders/ping_payload_decoder.cc | 89 ++
.../payload_decoders/ping_payload_decoder.h | 43 +
.../payload_decoders/ping_payload_decoder_test.cc | 122 +++
.../payload_decoders/priority_payload_decoder.cc | 64 ++
.../payload_decoders/priority_payload_decoder.h | 44 +
.../priority_payload_decoder_test.cc | 100 +++
.../push_promise_payload_decoder.cc | 172 ++++
.../push_promise_payload_decoder.h | 66 ++
.../push_promise_payload_decoder_test.cc | 151 ++++
.../payload_decoders/rst_stream_payload_decoder.cc | 66 ++
.../payload_decoders/rst_stream_payload_decoder.h | 42 +
.../rst_stream_payload_decoder_test.cc | 102 +++
.../payload_decoders/settings_payload_decoder.cc | 97 ++
.../payload_decoders/settings_payload_decoder.h | 54 ++
.../settings_payload_decoder_test.cc | 176 ++++
.../payload_decoders/unknown_payload_decoder.cc | 55 ++
.../payload_decoders/unknown_payload_decoder.h | 33 +
.../unknown_payload_decoder_test.cc | 108 +++
.../window_update_payload_decoder.cc | 82 ++
.../window_update_payload_decoder.h | 42 +
.../window_update_payload_decoder_test.cc | 106 +++
net/http2/hpack/decoder/hpack_block_collector.cc | 154 ++++
net/http2/hpack/decoder/hpack_block_collector.h | 128 +++
net/http2/hpack/decoder/hpack_block_decoder.cc | 65 ++
net/http2/hpack/decoder/hpack_block_decoder.h | 69 ++
.../hpack/decoder/hpack_block_decoder_test.cc | 315 +++++++
.../hpack/decoder/hpack_decoder_string_buffer.cc | 215 +++++
.../hpack/decoder/hpack_decoder_string_buffer.h | 82 ++
.../decoder/hpack_decoder_string_buffer_test.cc | 245 +++++
net/http2/hpack/decoder/hpack_entry_collector.cc | 317 +++++++
net/http2/hpack/decoder/hpack_entry_collector.h | 154 ++++
net/http2/hpack/decoder/hpack_entry_decoder.cc | 233 +++++
net/http2/hpack/decoder/hpack_entry_decoder.h | 117 +++
.../hpack/decoder/hpack_entry_decoder_listener.cc | 83 ++
.../hpack/decoder/hpack_entry_decoder_listener.h | 110 +++
.../hpack/decoder/hpack_entry_decoder_test.cc | 244 +++++
.../hpack/decoder/hpack_entry_type_decoder.cc | 360 ++++++++
net/http2/hpack/decoder/hpack_entry_type_decoder.h | 56 ++
.../hpack/decoder/hpack_entry_type_decoder_test.cc | 98 ++
net/http2/hpack/decoder/hpack_string_collector.cc | 127 +++
net/http2/hpack/decoder/hpack_string_collector.h | 63 ++
net/http2/hpack/decoder/hpack_string_decoder.cc | 39 +
net/http2/hpack/decoder/hpack_string_decoder.h | 236 +++++
.../hpack/decoder/hpack_string_decoder_listener.cc | 36 +
.../hpack/decoder/hpack_string_decoder_listener.h | 62 ++
.../hpack/decoder/hpack_string_decoder_test.cc | 194 ++++
net/http2/hpack/decoder/hpack_varint_decoder.cc | 36 +
net/http2/hpack/decoder/hpack_varint_decoder.h | 181 ++++
.../hpack/decoder/hpack_varint_decoder_test.cc | 395 ++++++++
net/http2/hpack/http2_hpack_constants.cc | 33 +
net/http2/hpack/http2_hpack_constants.h | 61 ++
net/http2/hpack/http2_hpack_constants_test.cc | 34 +
.../hpack/huffman/http2_hpack_huffman_decoder.cc | 542 +++++++++++
.../hpack/huffman/http2_hpack_huffman_decoder.h | 149 +++
.../huffman/http2_hpack_huffman_decoder_test.cc | 292 ++++++
net/http2/hpack/tools/hpack_block_builder.cc | 84 ++
net/http2/hpack/tools/hpack_block_builder.h | 95 ++
net/http2/hpack/tools/hpack_block_builder_test.cc | 169 ++++
net/http2/hpack/tools/hpack_example.cc | 61 ++
net/http2/hpack/tools/hpack_example.h | 32 +
net/http2/http2_constants.cc | 161 ++++
net/http2/http2_constants.h | 265 ++++++
net/http2/http2_constants_test.cc | 272 ++++++
net/http2/http2_constants_test_util.cc | 142 +++
net/http2/http2_constants_test_util.h | 40 +
net/http2/http2_structures.cc | 138 +++
net/http2/http2_structures.h | 326 +++++++
net/http2/http2_structures_test.cc | 486 ++++++++++
net/http2/http2_structures_test_util.cc | 107 +++
net/http2/http2_structures_test_util.h | 61 ++
net/http2/tools/failure.cc | 29 +
net/http2/tools/failure.h | 154 ++++
net/http2/tools/http2_bug_tracker.h | 14 +
net/http2/tools/http2_frame_builder.cc | 182 ++++
net/http2/tools/http2_frame_builder.h | 100 +++
net/http2/tools/http2_random.cc | 59 ++
net/http2/tools/http2_random.h | 46 +
net/http2/tools/random_decoder_test.cc | 179 ++++
net/http2/tools/random_decoder_test.h | 264 ++++++
net/net.gypi | 125 +++
126 files changed, 19867 insertions(+)

Upstream: git.chromium.org


  • Share