#include "third_party/blink/renderer/platform/loader/fetch/fetch_utils.h"
#include <string_view>
#include "base/metrics/histogram_functions.h"
#include "base/strings/strcat.h"
#include "services/network/public/cpp/cors/cors.h"
#include "services/network/public/cpp/resource_request.h"
#include "third_party/blink/public/mojom/loader/resource_load_info.mojom-blink.h"
#include "third_party/blink/renderer/platform/network/http_header_map.h"
#include "third_party/blink/renderer/platform/network/http_names.h"
#include "third_party/blink/renderer/platform/network/http_parsers.h"
#include "third_party/blink/renderer/platform/wtf/hash_set.h"
#include "third_party/blink/renderer/platform/wtf/text/atomic_string.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
#include "third_party/blink/renderer/platform/wtf/threading.h"
namespace blink {
namespace {
enum class FetchKeepAliveRequestMetricType { … };
bool IsHTTPWhitespace(UChar chr) { … }
}
bool FetchUtils::IsForbiddenMethod(const String& method) { … }
bool FetchUtils::IsForbiddenResponseHeaderName(const String& name) { … }
AtomicString FetchUtils::NormalizeMethod(const AtomicString& method) { … }
String FetchUtils::NormalizeHeaderValue(const String& value) { … }
net::NetworkTrafficAnnotationTag FetchUtils::GetTrafficAnnotationTag(
const network::ResourceRequest& request) { … }
void FetchUtils::LogFetchKeepAliveRequestMetric(
const mojom::blink::RequestContextType& request_context_type,
const FetchKeepAliveRequestState& request_state,
bool is_context_detached) { … }
void FetchUtils::LogFetchKeepAliveRequestSentToServiceMetric(
const network::ResourceRequest& resource_request) { … }
}