// Copyright (c) 2018 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/third_party/quiche/src/quic/core/qpack/qpack_static_table.h"

#include "net/third_party/quiche/src/quic/platform/api/quic_arraysize.h"
#include "net/third_party/quiche/src/quic/platform/api/quic_logging.h"

namespace quic {

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

const std::vector<QpackStaticEntry>& QpackStaticTableVector() {
  static const auto* kQpackStaticTable = new std::vector<QpackStaticEntry>{
      STATIC_ENTRY(":authority", ""),                                     // 0
      STATIC_ENTRY(":path", "/"),                                         // 1
      STATIC_ENTRY("age", "0"),                                           // 2
      STATIC_ENTRY("content-disposition", ""),                            // 3
      STATIC_ENTRY("content-length", "0"),                                // 4
      STATIC_ENTRY("cookie", ""),                                         // 5
      STATIC_ENTRY("date", ""),                                           // 6
      STATIC_ENTRY("etag", ""),                                           // 7
      STATIC_ENTRY("if-modified-since", ""),                              // 8
      STATIC_ENTRY("if-none-match", ""),                                  // 9
      STATIC_ENTRY("last-modified", ""),                                  // 10
      STATIC_ENTRY("link", ""),                                           // 11
      STATIC_ENTRY("location", ""),                                       // 12
      STATIC_ENTRY("referer", ""),                                        // 13
      STATIC_ENTRY("set-cookie", ""),                                     // 14
      STATIC_ENTRY(":method", "CONNECT"),                                 // 15
      STATIC_ENTRY(":method", "DELETE"),                                  // 16
      STATIC_ENTRY(":method", "GET"),                                     // 17
      STATIC_ENTRY(":method", "HEAD"),                                    // 18
      STATIC_ENTRY(":method", "OPTIONS"),                                 // 19
      STATIC_ENTRY(":method", "POST"),                                    // 20
      STATIC_ENTRY(":method", "PUT"),                                     // 21
      STATIC_ENTRY(":scheme", "http"),                                    // 22
      STATIC_ENTRY(":scheme", "https"),                                   // 23
      STATIC_ENTRY(":status", "103"),                                     // 24
      STATIC_ENTRY(":status", "200"),                                     // 25
      STATIC_ENTRY(":status", "304"),                                     // 26
      STATIC_ENTRY(":status", "404"),                                     // 27
      STATIC_ENTRY(":status", "503"),                                     // 28
      STATIC_ENTRY("accept", "*/*"),                                      // 29
      STATIC_ENTRY("accept", "application/dns-message"),                  // 30
      STATIC_ENTRY("accept-encoding", "gzip, deflate, br"),               // 31
      STATIC_ENTRY("accept-ranges", "bytes"),                             // 32
      STATIC_ENTRY("access-control-allow-headers", "cache-control"),      // 33
      STATIC_ENTRY("access-control-allow-headers", "content-type"),       // 35
      STATIC_ENTRY("access-control-allow-origin", "*"),                   // 35
      STATIC_ENTRY("cache-control", "max-age=0"),                         // 36
      STATIC_ENTRY("cache-control", "max-age=2592000"),                   // 37
      STATIC_ENTRY("cache-control", "max-age=604800"),                    // 38
      STATIC_ENTRY("cache-control", "no-cache"),                          // 39
      STATIC_ENTRY("cache-control", "no-store"),                          // 40
      STATIC_ENTRY("cache-control", "public, max-age=31536000"),          // 41
      STATIC_ENTRY("content-encoding", "br"),                             // 42
      STATIC_ENTRY("content-encoding", "gzip"),                           // 43
      STATIC_ENTRY("content-type", "application/dns-message"),            // 44
      STATIC_ENTRY("content-type", "application/javascript"),             // 45
      STATIC_ENTRY("content-type", "application/json"),                   // 46
      STATIC_ENTRY("content-type", "application/x-www-form-urlencoded"),  // 47
      STATIC_ENTRY("content-type", "image/gif"),                          // 48
      STATIC_ENTRY("content-type", "image/jpeg"),                         // 49
      STATIC_ENTRY("content-type", "image/png"),                          // 50
      STATIC_ENTRY("content-type", "text/css"),                           // 51
      STATIC_ENTRY("content-type", "text/html; charset=utf-8"),           // 52
      STATIC_ENTRY("content-type", "text/plain"),                         // 53
      STATIC_ENTRY("content-type", "text/plain;charset=utf-8"),           // 54
      STATIC_ENTRY("range", "bytes=0-"),                                  // 55
      STATIC_ENTRY("strict-transport-security", "max-age=31536000"),      // 56
      STATIC_ENTRY("strict-transport-security",
                   "max-age=31536000; includesubdomains"),  // 57
      STATIC_ENTRY("strict-transport-security",
                   "max-age=31536000; includesubdomains; preload"),        // 58
      STATIC_ENTRY("vary", "accept-encoding"),                             // 59
      STATIC_ENTRY("vary", "origin"),                                      // 60
      STATIC_ENTRY("x-content-type-options", "nosniff"),                   // 61
      STATIC_ENTRY("x-xss-protection", "1; mode=block"),                   // 62
      STATIC_ENTRY(":status", "100"),                                      // 63
      STATIC_ENTRY(":status", "204"),                                      // 64
      STATIC_ENTRY(":status", "206"),                                      // 65
      STATIC_ENTRY(":status", "302"),                                      // 66
      STATIC_ENTRY(":status", "400"),                                      // 67
      STATIC_ENTRY(":status", "403"),                                      // 68
      STATIC_ENTRY(":status", "421"),                                      // 69
      STATIC_ENTRY(":status", "425"),                                      // 70
      STATIC_ENTRY(":status", "500"),                                      // 71
      STATIC_ENTRY("accept-language", ""),                                 // 72
      STATIC_ENTRY("access-control-allow-credentials", "FALSE"),           // 73
      STATIC_ENTRY("access-control-allow-credentials", "TRUE"),            // 74
      STATIC_ENTRY("access-control-allow-headers", "*"),                   // 75
      STATIC_ENTRY("access-control-allow-methods", "get"),                 // 76
      STATIC_ENTRY("access-control-allow-methods", "get, post, options"),  // 77
      STATIC_ENTRY("access-control-allow-methods", "options"),             // 78
      STATIC_ENTRY("access-control-expose-headers", "content-length"),     // 79
      STATIC_ENTRY("access-control-request-headers", "content-type"),      // 80
      STATIC_ENTRY("access-control-request-method", "get"),                // 81
      STATIC_ENTRY("access-control-request-method", "post"),               // 82
      STATIC_ENTRY("alt-svc", "clear"),                                    // 83
      STATIC_ENTRY("authorization", ""),                                   // 84
      STATIC_ENTRY(
          "content-security-policy",
          "script-src 'none'; object-src 'none'; base-uri 'none'"),  // 85
      STATIC_ENTRY("early-data", "1"),                               // 86
      STATIC_ENTRY("expect-ct", ""),                                 // 87
      STATIC_ENTRY("forwarded", ""),                                 // 88
      STATIC_ENTRY("if-range", ""),                                  // 89
      STATIC_ENTRY("origin", ""),                                    // 90
      STATIC_ENTRY("purpose", "prefetch"),                           // 91
      STATIC_ENTRY("server", ""),                                    // 92
      STATIC_ENTRY("timing-allow-origin", "*"),                      // 93
      STATIC_ENTRY("upgrade-insecure-requests", "1"),                // 94
      STATIC_ENTRY("user-agent", ""),                                // 95
      STATIC_ENTRY("x-forwarded-for", ""),                           // 96
      STATIC_ENTRY("x-frame-options", "deny"),                       // 97
      STATIC_ENTRY("x-frame-options", "sameorigin"),                 // 98
  };
  return *kQpackStaticTable;
}

#undef STATIC_ENTRY

const QpackStaticTable& ObtainQpackStaticTable() {
  static const QpackStaticTable* const shared_static_table = []() {
    auto* table = new QpackStaticTable();
    table->Initialize(QpackStaticTableVector().data(),
                      QpackStaticTableVector().size());
    CHECK(table->IsInitialized());
    return table;
  }();
  return *shared_static_table;
}

}  // namespace quic
