File: request_header_to_enum.cc

package info (click to toggle)
chromium 145.0.7632.159-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,976,224 kB
  • sloc: cpp: 36,198,469; ansic: 7,634,080; javascript: 3,564,060; python: 1,649,622; xml: 838,470; asm: 717,087; pascal: 185,708; sh: 88,786; perl: 88,718; objc: 79,984; sql: 59,811; cs: 42,452; fortran: 24,101; makefile: 21,144; tcl: 15,277; php: 14,022; yacc: 9,066; ruby: 7,553; awk: 3,720; lisp: 3,233; lex: 1,328; ada: 727; jsp: 228; sed: 36
file content (103 lines) | stat: -rw-r--r-- 4,883 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "services/network/request_header_to_enum.h"

#include "base/containers/fixed_flat_map.h"
#include "base/metrics/histogram_functions.h"

namespace network {

namespace {

constexpr auto kHeaderMap =
    base::MakeFixedFlatMap<std::string_view, RequestHeader>({
        {"accept", RequestHeader::kAccept},
        {"accept-encoding", RequestHeader::kAcceptEncoding},
        {"accept-language", RequestHeader::kAcceptLanguage},
        {"authorization", RequestHeader::kAuthorization},
        {"cache-control", RequestHeader::kCacheControl},
        {"client-version", RequestHeader::kClientVersion},
        {"content-encoding", RequestHeader::kContentEncoding},
        {"content-type", RequestHeader::kContentType},
        {"device-memory", RequestHeader::kDeviceMemory},
        {"downlink", RequestHeader::kDownlink},
        {"dpr", RequestHeader::kDpr},
        {"ect", RequestHeader::kEct},
        {"google-translate-element-mode",
         RequestHeader::kGoogleTranslateElementMode},
        {"if-modified-since", RequestHeader::kIfModifiedSince},
        {"if-none-match", RequestHeader::kIfNoneMatch},
        {"origin", RequestHeader::kOrigin},
        {"ping-from", RequestHeader::kPingFrom},
        {"ping-to", RequestHeader::kPingTo},
        {"pragma", RequestHeader::kPragma},
        {"range", RequestHeader::kRange},
        {"request-id", RequestHeader::kRequestId},
        {"rtt", RequestHeader::kRtt},
        {"sec-browsing-topics", RequestHeader::kSecBrowsingTopics},
        {"sec-ch-device-memory", RequestHeader::kSecChDeviceMemory},
        {"sec-ch-dpr", RequestHeader::kSecChDpr},
        {"sec-ch-prefers-color-scheme",
         RequestHeader::kSecChPrefersColorScheme},
        {"sec-ch-ua", RequestHeader::kSecChUa},
        {"sec-ch-ua-arch", RequestHeader::kSecChUaArch},
        {"sec-ch-ua-bitness", RequestHeader::kSecChUaBitness},
        {"sec-ch-ua-form-factors", RequestHeader::kSecChUaFormFactors},
        {"sec-ch-ua-full-version", RequestHeader::kSecChUaFullVersion},
        {"sec-ch-ua-full-version-list", RequestHeader::kSecChUaFullVersionList},
        {"sec-ch-ua-mobile", RequestHeader::kSecChUaMobile},
        {"sec-ch-ua-model", RequestHeader::kSecChUaModel},
        {"sec-ch-ua-platform", RequestHeader::kSecChUaPlatform},
        {"sec-ch-ua-platform-version", RequestHeader::kSecChUaPlatformVersion},
        {"sec-ch-ua-wow64", RequestHeader::kSecChUaWow64},
        {"sec-ch-viewport-height", RequestHeader::kSecChViewportHeight},
        {"sec-ch-viewport-width", RequestHeader::kSecChViewportWidth},
        {"sec-purpose", RequestHeader::kSecPurpose},
        {"service-worker", RequestHeader::kServiceWorker},
        {"service-worker-navigation-preload",
         RequestHeader::kServiceWorkerNavigationPreload},
        {"sid", RequestHeader::kSID},
        {"traceparent", RequestHeader::kTraceparent},
        {"upgrade-insecure-requests", RequestHeader::kUpgradeInsecureRequests},
        {"user-agent", RequestHeader::kUserAgent},
        {"viewport-width", RequestHeader::kViewportWidth},
        {"x-chrome-connected", RequestHeader::kXChromeConnected},
        {"x-chrome-id-consistency-request",
         RequestHeader::kXChromeIDConsistencyRequest},
        {"x-client-data", RequestHeader::kXClientData},
        {"x-developer-key", RequestHeader::kXDeveloperKey},
        {"x-goog-api-key", RequestHeader::kXGoogApiKey},
        {"x-goog-encode-response-if-executable",
         RequestHeader::kXGoogEncodeResponseIfExecutable},
        {"x-goog-ext-174067345-bin", RequestHeader::kXGoogExt174067345Bin},
        {"x-goog-update-appid", RequestHeader::kXGoogUpdateAppId},
        {"x-goog-update-interactivity",
         RequestHeader::kXGoogUpdateInteractivity},
        {"x-goog-update-updater", RequestHeader::kXGoogUpdateUpdater},
        {"x-http-method-override", RequestHeader::kXHTTPMethodOverride},
        {"x-oauth-client-id", RequestHeader::kXOAuthClientID},
        {"x-requested-with", RequestHeader::kXRequestedWith},
        {"x-server-timeout", RequestHeader::kXServerTimeout},
        {"x-use-alt-service", RequestHeader::kXUseAltService},
        {"x-webchannel-content-type", RequestHeader::kXWebChannelContentType},
    });

}  // namespace

RequestHeader LowerCaseRequestHeaderToEnum(std::string_view name) {
  auto it = kHeaderMap.find(name);
  if (it != kHeaderMap.end()) {
    return it->second;
  }
  return RequestHeader::kOther;
}

void LogLowerCaseRequestHeaderToUma(std::string_view histogram_name,
                                    std::string_view header_name) {
  base::UmaHistogramEnumeration(histogram_name,
                                LowerCaseRequestHeaderToEnum(header_name));
}

}  // namespace network