// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "net/spdy/hpack_constants.h"

#include <vector>

#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/singleton.h"
#include "net/spdy/hpack_huffman_table.h"
#include "net/spdy/hpack_static_table.h"

namespace net {

namespace {


// SharedHpackHuffmanTable is a Singleton wrapping a HpackHuffmanTable
// instance initialized with |kHpackHuffmanCode|.
struct SharedHpackHuffmanTable {
 public:
  SharedHpackHuffmanTable() {
    std::vector<HpackHuffmanSymbol> code = HpackHuffmanCode();
    scoped_ptr<HpackHuffmanTable> mutable_table(new HpackHuffmanTable());
    CHECK(mutable_table->Initialize(&code[0], code.size()));
    CHECK(mutable_table->IsInitialized());
    table.reset(mutable_table.release());
  }

  static SharedHpackHuffmanTable* GetInstance() {
    return Singleton<SharedHpackHuffmanTable>::get();
  }

  scoped_ptr<const HpackHuffmanTable> table;
};

// SharedHpackStaticTable is a Singleton wrapping a HpackStaticTable
// instance initialized with |kHpackStaticTable|.
struct SharedHpackStaticTable {
 public:
  SharedHpackStaticTable() {
    std::vector<HpackStaticEntry> static_table = HpackStaticTableVector();
    scoped_ptr<HpackStaticTable> mutable_table(new HpackStaticTable());
    mutable_table->Initialize(&static_table[0], static_table.size());
    CHECK(mutable_table->IsInitialized());
    table.reset(mutable_table.release());
  }

  static SharedHpackStaticTable* GetInstance() {
    return Singleton<SharedHpackStaticTable>::get();
  }

  scoped_ptr<const HpackStaticTable> table;
};

}  // namespace

// Produced by applying the python program [1] with tables
// provided by [2] (inserted into the source of the python program)
// and copy-paste them into this file.
//
// [1] net/tools/build_hpack_constants.py
// [2] http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-08

// HpackHuffmanSymbol entries are initialized as {code, length, id}.
// Codes are specified in the |length| most-significant bits of |code|.
std::vector<HpackHuffmanSymbol> HpackHuffmanCode() {
  static const HpackHuffmanSymbol kHpackHuffmanCode[] = {
    {0xffc00000ul, 13,   0},  //     11111111|11000
    {0xffffb000ul, 23,   1},  //     11111111|11111111|1011000
    {0xfffffe20ul, 28,   2},  //     11111111|11111111|11111110|0010
    {0xfffffe30ul, 28,   3},  //     11111111|11111111|11111110|0011
    {0xfffffe40ul, 28,   4},  //     11111111|11111111|11111110|0100
    {0xfffffe50ul, 28,   5},  //     11111111|11111111|11111110|0101
    {0xfffffe60ul, 28,   6},  //     11111111|11111111|11111110|0110
    {0xfffffe70ul, 28,   7},  //     11111111|11111111|11111110|0111
    {0xfffffe80ul, 28,   8},  //     11111111|11111111|11111110|1000
    {0xffffea00ul, 24,   9},  //     11111111|11111111|11101010
    {0xfffffff0ul, 30,  10},  //     11111111|11111111|11111111|111100
    {0xfffffe90ul, 28,  11},  //     11111111|11111111|11111110|1001
    {0xfffffea0ul, 28,  12},  //     11111111|11111111|11111110|1010
    {0xfffffff4ul, 30,  13},  //     11111111|11111111|11111111|111101
    {0xfffffeb0ul, 28,  14},  //     11111111|11111111|11111110|1011
    {0xfffffec0ul, 28,  15},  //     11111111|11111111|11111110|1100
    {0xfffffed0ul, 28,  16},  //     11111111|11111111|11111110|1101
    {0xfffffee0ul, 28,  17},  //     11111111|11111111|11111110|1110
    {0xfffffef0ul, 28,  18},  //     11111111|11111111|11111110|1111
    {0xffffff00ul, 28,  19},  //     11111111|11111111|11111111|0000
    {0xffffff10ul, 28,  20},  //     11111111|11111111|11111111|0001
    {0xffffff20ul, 28,  21},  //     11111111|11111111|11111111|0010
    {0xfffffff8ul, 30,  22},  //     11111111|11111111|11111111|111110
    {0xffffff30ul, 28,  23},  //     11111111|11111111|11111111|0011
    {0xffffff40ul, 28,  24},  //     11111111|11111111|11111111|0100
    {0xffffff50ul, 28,  25},  //     11111111|11111111|11111111|0101
    {0xffffff60ul, 28,  26},  //     11111111|11111111|11111111|0110
    {0xffffff70ul, 28,  27},  //     11111111|11111111|11111111|0111
    {0xffffff80ul, 28,  28},  //     11111111|11111111|11111111|1000
    {0xffffff90ul, 28,  29},  //     11111111|11111111|11111111|1001
    {0xffffffa0ul, 28,  30},  //     11111111|11111111|11111111|1010
    {0xffffffb0ul, 28,  31},  //     11111111|11111111|11111111|1011
    {0x50000000ul,  6,  32},  // ' ' 010100
    {0xfe000000ul, 10,  33},  // '!' 11111110|00
    {0xfe400000ul, 10,  34},  // '"' 11111110|01
    {0xffa00000ul, 12,  35},  // '#' 11111111|1010
    {0xffc80000ul, 13,  36},  // '$' 11111111|11001
    {0x54000000ul,  6,  37},  // '%' 010101
    {0xf8000000ul,  8,  38},  // '&' 11111000
    {0xff400000ul, 11,  39},  // ''' 11111111|010
    {0xfe800000ul, 10,  40},  // '(' 11111110|10
    {0xfec00000ul, 10,  41},  // ')' 11111110|11
    {0xf9000000ul,  8,  42},  // '*' 11111001
    {0xff600000ul, 11,  43},  // '+' 11111111|011
    {0xfa000000ul,  8,  44},  // ',' 11111010
    {0x58000000ul,  6,  45},  // '-' 010110
    {0x5c000000ul,  6,  46},  // '.' 010111
    {0x60000000ul,  6,  47},  // '/' 011000
    {0x00000000ul,  5,  48},  // '0' 00000
    {0x08000000ul,  5,  49},  // '1' 00001
    {0x10000000ul,  5,  50},  // '2' 00010
    {0x64000000ul,  6,  51},  // '3' 011001
    {0x68000000ul,  6,  52},  // '4' 011010
    {0x6c000000ul,  6,  53},  // '5' 011011
    {0x70000000ul,  6,  54},  // '6' 011100
    {0x74000000ul,  6,  55},  // '7' 011101
    {0x78000000ul,  6,  56},  // '8' 011110
    {0x7c000000ul,  6,  57},  // '9' 011111
    {0xb8000000ul,  7,  58},  // ':' 1011100
    {0xfb000000ul,  8,  59},  // ';' 11111011
    {0xfff80000ul, 15,  60},  // '<' 11111111|1111100
    {0x80000000ul,  6,  61},  // '=' 100000
    {0xffb00000ul, 12,  62},  // '>' 11111111|1011
    {0xff000000ul, 10,  63},  // '?' 11111111|00
    {0xffd00000ul, 13,  64},  // '@' 11111111|11010
    {0x84000000ul,  6,  65},  // 'A' 100001
    {0xba000000ul,  7,  66},  // 'B' 1011101
    {0xbc000000ul,  7,  67},  // 'C' 1011110
    {0xbe000000ul,  7,  68},  // 'D' 1011111
    {0xc0000000ul,  7,  69},  // 'E' 1100000
    {0xc2000000ul,  7,  70},  // 'F' 1100001
    {0xc4000000ul,  7,  71},  // 'G' 1100010
    {0xc6000000ul,  7,  72},  // 'H' 1100011
    {0xc8000000ul,  7,  73},  // 'I' 1100100
    {0xca000000ul,  7,  74},  // 'J' 1100101
    {0xcc000000ul,  7,  75},  // 'K' 1100110
    {0xce000000ul,  7,  76},  // 'L' 1100111
    {0xd0000000ul,  7,  77},  // 'M' 1101000
    {0xd2000000ul,  7,  78},  // 'N' 1101001
    {0xd4000000ul,  7,  79},  // 'O' 1101010
    {0xd6000000ul,  7,  80},  // 'P' 1101011
    {0xd8000000ul,  7,  81},  // 'Q' 1101100
    {0xda000000ul,  7,  82},  // 'R' 1101101
    {0xdc000000ul,  7,  83},  // 'S' 1101110
    {0xde000000ul,  7,  84},  // 'T' 1101111
    {0xe0000000ul,  7,  85},  // 'U' 1110000
    {0xe2000000ul,  7,  86},  // 'V' 1110001
    {0xe4000000ul,  7,  87},  // 'W' 1110010
    {0xfc000000ul,  8,  88},  // 'X' 11111100
    {0xe6000000ul,  7,  89},  // 'Y' 1110011
    {0xfd000000ul,  8,  90},  // 'Z' 11111101
    {0xffd80000ul, 13,  91},  // '[' 11111111|11011
    {0xfffe0000ul, 19,  92},  // '\' 11111111|11111110|000
    {0xffe00000ul, 13,  93},  // ']' 11111111|11100
    {0xfff00000ul, 14,  94},  // '^' 11111111|111100
    {0x88000000ul,  6,  95},  // '_' 100010
    {0xfffa0000ul, 15,  96},  // '`' 11111111|1111101
    {0x18000000ul,  5,  97},  // 'a' 00011
    {0x8c000000ul,  6,  98},  // 'b' 100011
    {0x20000000ul,  5,  99},  // 'c' 00100
    {0x90000000ul,  6, 100},  // 'd' 100100
    {0x28000000ul,  5, 101},  // 'e' 00101
    {0x94000000ul,  6, 102},  // 'f' 100101
    {0x98000000ul,  6, 103},  // 'g' 100110
    {0x9c000000ul,  6, 104},  // 'h' 100111
    {0x30000000ul,  5, 105},  // 'i' 00110
    {0xe8000000ul,  7, 106},  // 'j' 1110100
    {0xea000000ul,  7, 107},  // 'k' 1110101
    {0xa0000000ul,  6, 108},  // 'l' 101000
    {0xa4000000ul,  6, 109},  // 'm' 101001
    {0xa8000000ul,  6, 110},  // 'n' 101010
    {0x38000000ul,  5, 111},  // 'o' 00111
    {0xac000000ul,  6, 112},  // 'p' 101011
    {0xec000000ul,  7, 113},  // 'q' 1110110
    {0xb0000000ul,  6, 114},  // 'r' 101100
    {0x40000000ul,  5, 115},  // 's' 01000
    {0x48000000ul,  5, 116},  // 't' 01001
    {0xb4000000ul,  6, 117},  // 'u' 101101
    {0xee000000ul,  7, 118},  // 'v' 1110111
    {0xf0000000ul,  7, 119},  // 'w' 1111000
    {0xf2000000ul,  7, 120},  // 'x' 1111001
    {0xf4000000ul,  7, 121},  // 'y' 1111010
    {0xf6000000ul,  7, 122},  // 'z' 1111011
    {0xfffc0000ul, 15, 123},  // '{' 11111111|1111110
    {0xff800000ul, 11, 124},  // '|' 11111111|100
    {0xfff40000ul, 14, 125},  // '}' 11111111|111101
    {0xffe80000ul, 13, 126},  // '~' 11111111|11101
    {0xffffffc0ul, 28, 127},  //     11111111|11111111|11111111|1100
    {0xfffe6000ul, 20, 128},  //     11111111|11111110|0110
    {0xffff4800ul, 22, 129},  //     11111111|11111111|010010
    {0xfffe7000ul, 20, 130},  //     11111111|11111110|0111
    {0xfffe8000ul, 20, 131},  //     11111111|11111110|1000
    {0xffff4c00ul, 22, 132},  //     11111111|11111111|010011
    {0xffff5000ul, 22, 133},  //     11111111|11111111|010100
    {0xffff5400ul, 22, 134},  //     11111111|11111111|010101
    {0xffffb200ul, 23, 135},  //     11111111|11111111|1011001
    {0xffff5800ul, 22, 136},  //     11111111|11111111|010110
    {0xffffb400ul, 23, 137},  //     11111111|11111111|1011010
    {0xffffb600ul, 23, 138},  //     11111111|11111111|1011011
    {0xffffb800ul, 23, 139},  //     11111111|11111111|1011100
    {0xffffba00ul, 23, 140},  //     11111111|11111111|1011101
    {0xffffbc00ul, 23, 141},  //     11111111|11111111|1011110
    {0xffffeb00ul, 24, 142},  //     11111111|11111111|11101011
    {0xffffbe00ul, 23, 143},  //     11111111|11111111|1011111
    {0xffffec00ul, 24, 144},  //     11111111|11111111|11101100
    {0xffffed00ul, 24, 145},  //     11111111|11111111|11101101
    {0xffff5c00ul, 22, 146},  //     11111111|11111111|010111
    {0xffffc000ul, 23, 147},  //     11111111|11111111|1100000
    {0xffffee00ul, 24, 148},  //     11111111|11111111|11101110
    {0xffffc200ul, 23, 149},  //     11111111|11111111|1100001
    {0xffffc400ul, 23, 150},  //     11111111|11111111|1100010
    {0xffffc600ul, 23, 151},  //     11111111|11111111|1100011
    {0xffffc800ul, 23, 152},  //     11111111|11111111|1100100
    {0xfffee000ul, 21, 153},  //     11111111|11111110|11100
    {0xffff6000ul, 22, 154},  //     11111111|11111111|011000
    {0xffffca00ul, 23, 155},  //     11111111|11111111|1100101
    {0xffff6400ul, 22, 156},  //     11111111|11111111|011001
    {0xffffcc00ul, 23, 157},  //     11111111|11111111|1100110
    {0xffffce00ul, 23, 158},  //     11111111|11111111|1100111
    {0xffffef00ul, 24, 159},  //     11111111|11111111|11101111
    {0xffff6800ul, 22, 160},  //     11111111|11111111|011010
    {0xfffee800ul, 21, 161},  //     11111111|11111110|11101
    {0xfffe9000ul, 20, 162},  //     11111111|11111110|1001
    {0xffff6c00ul, 22, 163},  //     11111111|11111111|011011
    {0xffff7000ul, 22, 164},  //     11111111|11111111|011100
    {0xffffd000ul, 23, 165},  //     11111111|11111111|1101000
    {0xffffd200ul, 23, 166},  //     11111111|11111111|1101001
    {0xfffef000ul, 21, 167},  //     11111111|11111110|11110
    {0xffffd400ul, 23, 168},  //     11111111|11111111|1101010
    {0xffff7400ul, 22, 169},  //     11111111|11111111|011101
    {0xffff7800ul, 22, 170},  //     11111111|11111111|011110
    {0xfffff000ul, 24, 171},  //     11111111|11111111|11110000
    {0xfffef800ul, 21, 172},  //     11111111|11111110|11111
    {0xffff7c00ul, 22, 173},  //     11111111|11111111|011111
    {0xffffd600ul, 23, 174},  //     11111111|11111111|1101011
    {0xffffd800ul, 23, 175},  //     11111111|11111111|1101100
    {0xffff0000ul, 21, 176},  //     11111111|11111111|00000
    {0xffff0800ul, 21, 177},  //     11111111|11111111|00001
    {0xffff8000ul, 22, 178},  //     11111111|11111111|100000
    {0xffff1000ul, 21, 179},  //     11111111|11111111|00010
    {0xffffda00ul, 23, 180},  //     11111111|11111111|1101101
    {0xffff8400ul, 22, 181},  //     11111111|11111111|100001
    {0xffffdc00ul, 23, 182},  //     11111111|11111111|1101110
    {0xffffde00ul, 23, 183},  //     11111111|11111111|1101111
    {0xfffea000ul, 20, 184},  //     11111111|11111110|1010
    {0xffff8800ul, 22, 185},  //     11111111|11111111|100010
    {0xffff8c00ul, 22, 186},  //     11111111|11111111|100011
    {0xffff9000ul, 22, 187},  //     11111111|11111111|100100
    {0xffffe000ul, 23, 188},  //     11111111|11111111|1110000
    {0xffff9400ul, 22, 189},  //     11111111|11111111|100101
    {0xffff9800ul, 22, 190},  //     11111111|11111111|100110
    {0xffffe200ul, 23, 191},  //     11111111|11111111|1110001
    {0xfffff800ul, 26, 192},  //     11111111|11111111|11111000|00
    {0xfffff840ul, 26, 193},  //     11111111|11111111|11111000|01
    {0xfffeb000ul, 20, 194},  //     11111111|11111110|1011
    {0xfffe2000ul, 19, 195},  //     11111111|11111110|001
    {0xffff9c00ul, 22, 196},  //     11111111|11111111|100111
    {0xffffe400ul, 23, 197},  //     11111111|11111111|1110010
    {0xffffa000ul, 22, 198},  //     11111111|11111111|101000
    {0xfffff600ul, 25, 199},  //     11111111|11111111|11110110|0
    {0xfffff880ul, 26, 200},  //     11111111|11111111|11111000|10
    {0xfffff8c0ul, 26, 201},  //     11111111|11111111|11111000|11
    {0xfffff900ul, 26, 202},  //     11111111|11111111|11111001|00
    {0xfffffbc0ul, 27, 203},  //     11111111|11111111|11111011|110
    {0xfffffbe0ul, 27, 204},  //     11111111|11111111|11111011|111
    {0xfffff940ul, 26, 205},  //     11111111|11111111|11111001|01
    {0xfffff100ul, 24, 206},  //     11111111|11111111|11110001
    {0xfffff680ul, 25, 207},  //     11111111|11111111|11110110|1
    {0xfffe4000ul, 19, 208},  //     11111111|11111110|010
    {0xffff1800ul, 21, 209},  //     11111111|11111111|00011
    {0xfffff980ul, 26, 210},  //     11111111|11111111|11111001|10
    {0xfffffc00ul, 27, 211},  //     11111111|11111111|11111100|000
    {0xfffffc20ul, 27, 212},  //     11111111|11111111|11111100|001
    {0xfffff9c0ul, 26, 213},  //     11111111|11111111|11111001|11
    {0xfffffc40ul, 27, 214},  //     11111111|11111111|11111100|010
    {0xfffff200ul, 24, 215},  //     11111111|11111111|11110010
    {0xffff2000ul, 21, 216},  //     11111111|11111111|00100
    {0xffff2800ul, 21, 217},  //     11111111|11111111|00101
    {0xfffffa00ul, 26, 218},  //     11111111|11111111|11111010|00
    {0xfffffa40ul, 26, 219},  //     11111111|11111111|11111010|01
    {0xffffffd0ul, 28, 220},  //     11111111|11111111|11111111|1101
    {0xfffffc60ul, 27, 221},  //     11111111|11111111|11111100|011
    {0xfffffc80ul, 27, 222},  //     11111111|11111111|11111100|100
    {0xfffffca0ul, 27, 223},  //     11111111|11111111|11111100|101
    {0xfffec000ul, 20, 224},  //     11111111|11111110|1100
    {0xfffff300ul, 24, 225},  //     11111111|11111111|11110011
    {0xfffed000ul, 20, 226},  //     11111111|11111110|1101
    {0xffff3000ul, 21, 227},  //     11111111|11111111|00110
    {0xffffa400ul, 22, 228},  //     11111111|11111111|101001
    {0xffff3800ul, 21, 229},  //     11111111|11111111|00111
    {0xffff4000ul, 21, 230},  //     11111111|11111111|01000
    {0xffffe600ul, 23, 231},  //     11111111|11111111|1110011
    {0xffffa800ul, 22, 232},  //     11111111|11111111|101010
    {0xffffac00ul, 22, 233},  //     11111111|11111111|101011
    {0xfffff700ul, 25, 234},  //     11111111|11111111|11110111|0
    {0xfffff780ul, 25, 235},  //     11111111|11111111|11110111|1
    {0xfffff400ul, 24, 236},  //     11111111|11111111|11110100
    {0xfffff500ul, 24, 237},  //     11111111|11111111|11110101
    {0xfffffa80ul, 26, 238},  //     11111111|11111111|11111010|10
    {0xffffe800ul, 23, 239},  //     11111111|11111111|1110100
    {0xfffffac0ul, 26, 240},  //     11111111|11111111|11111010|11
    {0xfffffcc0ul, 27, 241},  //     11111111|11111111|11111100|110
    {0xfffffb00ul, 26, 242},  //     11111111|11111111|11111011|00
    {0xfffffb40ul, 26, 243},  //     11111111|11111111|11111011|01
    {0xfffffce0ul, 27, 244},  //     11111111|11111111|11111100|111
    {0xfffffd00ul, 27, 245},  //     11111111|11111111|11111101|000
    {0xfffffd20ul, 27, 246},  //     11111111|11111111|11111101|001
    {0xfffffd40ul, 27, 247},  //     11111111|11111111|11111101|010
    {0xfffffd60ul, 27, 248},  //     11111111|11111111|11111101|011
    {0xffffffe0ul, 28, 249},  //     11111111|11111111|11111111|1110
    {0xfffffd80ul, 27, 250},  //     11111111|11111111|11111101|100
    {0xfffffda0ul, 27, 251},  //     11111111|11111111|11111101|101
    {0xfffffdc0ul, 27, 252},  //     11111111|11111111|11111101|110
    {0xfffffde0ul, 27, 253},  //     11111111|11111111|11111101|111
    {0xfffffe00ul, 27, 254},  //     11111111|11111111|11111110|000
    {0xfffffb80ul, 26, 255},  //     11111111|11111111|11111011|10
    {0xfffffffcul, 30, 256},  // EOS 11111111|11111111|11111111|111111
  };
  return std::vector<HpackHuffmanSymbol>(
      kHpackHuffmanCode,
      kHpackHuffmanCode + arraysize(kHpackHuffmanCode));
}

// The "constructor" for a HpackStaticEntry that computes the lengths at
// compile time.
#define STATIC_ENTRY(name, value) \
  { name, arraysize(name) - 1, value, arraysize(value) - 1 }

std::vector<HpackStaticEntry> HpackStaticTableVector() {
  static const HpackStaticEntry kHpackStaticTable[] = {
    STATIC_ENTRY(":authority", ""),                    // 1
    STATIC_ENTRY(":method", "GET"),                    // 2
    STATIC_ENTRY(":method", "POST"),                   // 3
    STATIC_ENTRY(":path", "/"),                        // 4
    STATIC_ENTRY(":path", "/index.html"),              // 5
    STATIC_ENTRY(":scheme", "http"),                   // 6
    STATIC_ENTRY(":scheme", "https"),                  // 7
    STATIC_ENTRY(":status", "200"),                    // 8
    STATIC_ENTRY(":status", "204"),                    // 9
    STATIC_ENTRY(":status", "206"),                    // 10
    STATIC_ENTRY(":status", "304"),                    // 11
    STATIC_ENTRY(":status", "400"),                    // 12
    STATIC_ENTRY(":status", "404"),                    // 13
    STATIC_ENTRY(":status", "500"),                    // 14
    STATIC_ENTRY("accept-charset", ""),                // 15
    STATIC_ENTRY("accept-encoding", "gzip, deflate"),  // 16
    STATIC_ENTRY("accept-language", ""),               // 17
    STATIC_ENTRY("accept-ranges", ""),                 // 18
    STATIC_ENTRY("accept", ""),                        // 19
    STATIC_ENTRY("access-control-allow-origin", ""),   // 20
    STATIC_ENTRY("age", ""),                           // 21
    STATIC_ENTRY("allow", ""),                         // 22
    STATIC_ENTRY("authorization", ""),                 // 23
    STATIC_ENTRY("cache-control", ""),                 // 24
    STATIC_ENTRY("content-disposition", ""),           // 25
    STATIC_ENTRY("content-encoding", ""),              // 26
    STATIC_ENTRY("content-language", ""),              // 27
    STATIC_ENTRY("content-length", ""),                // 28
    STATIC_ENTRY("content-location", ""),              // 29
    STATIC_ENTRY("content-range", ""),                 // 30
    STATIC_ENTRY("content-type", ""),                  // 31
    STATIC_ENTRY("cookie", ""),                        // 32
    STATIC_ENTRY("date", ""),                          // 33
    STATIC_ENTRY("etag", ""),                          // 34
    STATIC_ENTRY("expect", ""),                        // 35
    STATIC_ENTRY("expires", ""),                       // 36
    STATIC_ENTRY("from", ""),                          // 37
    STATIC_ENTRY("host", ""),                          // 38
    STATIC_ENTRY("if-match", ""),                      // 39
    STATIC_ENTRY("if-modified-since", ""),             // 40
    STATIC_ENTRY("if-none-match", ""),                 // 41
    STATIC_ENTRY("if-range", ""),                      // 42
    STATIC_ENTRY("if-unmodified-since", ""),           // 43
    STATIC_ENTRY("last-modified", ""),                 // 44
    STATIC_ENTRY("link", ""),                          // 45
    STATIC_ENTRY("location", ""),                      // 46
    STATIC_ENTRY("max-forwards", ""),                  // 47
    STATIC_ENTRY("proxy-authenticate", ""),            // 48
    STATIC_ENTRY("proxy-authorization", ""),           // 49
    STATIC_ENTRY("range", ""),                         // 50
    STATIC_ENTRY("referer", ""),                       // 51
    STATIC_ENTRY("refresh", ""),                       // 52
    STATIC_ENTRY("retry-after", ""),                   // 53
    STATIC_ENTRY("server", ""),                        // 54
    STATIC_ENTRY("set-cookie", ""),                    // 55
    STATIC_ENTRY("strict-transport-security", ""),     // 56
    STATIC_ENTRY("transfer-encoding", ""),             // 57
    STATIC_ENTRY("user-agent", ""),                    // 58
    STATIC_ENTRY("vary", ""),                          // 59
    STATIC_ENTRY("via", ""),                           // 60
    STATIC_ENTRY("www-authenticate", ""),              // 61
  };
  return std::vector<HpackStaticEntry>(
      kHpackStaticTable,
      kHpackStaticTable + arraysize(kHpackStaticTable));
}

#undef STATIC_ENTRY

const HpackHuffmanTable& ObtainHpackHuffmanTable() {
  return *SharedHpackHuffmanTable::GetInstance()->table;
}

const HpackStaticTable& ObtainHpackStaticTable() {
  return *SharedHpackStaticTable::GetInstance()->table;
}

}  // namespace net
