diff --git a/build/source_list.bzl b/build/source_list.bzl
index 4d0a1fd..e8b4451 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -408,7 +408,6 @@
     "balsa/balsa_frame.cc",
     "balsa/balsa_headers.cc",
     "balsa/header_properties.cc",
-    "balsa/http_validation_policy.cc",
     "balsa/simple_buffer.cc",
     "balsa/standard_header_map.cc",
     "common/capsule.cc",
diff --git a/build/source_list.gni b/build/source_list.gni
index 445844a..da3d5f0 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -408,7 +408,6 @@
     "src/quiche/balsa/balsa_frame.cc",
     "src/quiche/balsa/balsa_headers.cc",
     "src/quiche/balsa/header_properties.cc",
-    "src/quiche/balsa/http_validation_policy.cc",
     "src/quiche/balsa/simple_buffer.cc",
     "src/quiche/balsa/standard_header_map.cc",
     "src/quiche/common/capsule.cc",
diff --git a/build/source_list.json b/build/source_list.json
index d03d722..04319c6 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -407,7 +407,6 @@
     "quiche/balsa/balsa_frame.cc",
     "quiche/balsa/balsa_headers.cc",
     "quiche/balsa/header_properties.cc",
-    "quiche/balsa/http_validation_policy.cc",
     "quiche/balsa/simple_buffer.cc",
     "quiche/balsa/standard_header_map.cc",
     "quiche/common/capsule.cc",
diff --git a/quiche/balsa/balsa_frame.cc b/quiche/balsa/balsa_frame.cc
index 8e693cb..5219bf3 100644
--- a/quiche/balsa/balsa_frame.cc
+++ b/quiche/balsa/balsa_frame.cc
@@ -350,7 +350,7 @@
       // https://tools.ietf.org/html/rfc7230#section-3.2.4 says that a proxy
       // can choose to reject or normalize continuation lines.
       if ((c != ' ' && c != '\t') ||
-          http_validation_policy().disallow_header_continuation_lines()) {
+          http_validation_policy().disallow_header_continuation_lines) {
         HandleError(is_trailer ? BalsaFrameEnums::INVALID_TRAILER_FORMAT
                                : BalsaFrameEnums::INVALID_HEADER_FORMAT);
         return false;
@@ -384,7 +384,7 @@
         line_begin - stream_begin, line_end - stream_begin,
         line_end - stream_begin, line_end - stream_begin, 0));
     if (current >= line_end) {
-      if (http_validation_policy().require_header_colon()) {
+      if (http_validation_policy().require_header_colon) {
         HandleError(is_trailer ? BalsaFrameEnums::TRAILER_MISSING_COLON
                                : BalsaFrameEnums::HEADER_MISSING_COLON);
         return false;
@@ -424,7 +424,7 @@
       // construct which is technically not allowed by the spec.
 
       // In strict mode, we do treat this invalid value-less key as an error.
-      if (http_validation_policy().require_header_colon()) {
+      if (http_validation_policy().require_header_colon) {
         HandleError(is_trailer ? BalsaFrameEnums::TRAILER_MISSING_COLON
                                : BalsaFrameEnums::HEADER_MISSING_COLON);
         return false;
@@ -624,7 +624,7 @@
       if ((headers->content_length_status_ != content_length_status) ||
           ((headers->content_length_status_ ==
             BalsaHeadersEnums::VALID_CONTENT_LENGTH) &&
-           (http_validation_policy().disallow_multiple_content_length() ||
+           (http_validation_policy().disallow_multiple_content_length ||
             length != headers->content_length_))) {
         HandleError(BalsaFrameEnums::MULTIPLE_CONTENT_LENGTH_KEYS);
         return;
@@ -642,7 +642,7 @@
 
   if (!is_trailer) {
     if (http_validation_policy()
-            .disallow_transfer_encoding_with_content_length() &&
+            .disallow_transfer_encoding_with_content_length &&
         content_length_idx != 0 && transfer_encoding_idx != 0) {
       HandleError(BalsaFrameEnums::BOTH_TRANSFER_ENCODING_AND_CONTENT_LENGTH);
       return;
diff --git a/quiche/balsa/balsa_frame.h b/quiche/balsa/balsa_frame.h
index a698298..7dd3214 100644
--- a/quiche/balsa/balsa_frame.h
+++ b/quiche/balsa/balsa_frame.h
@@ -68,8 +68,7 @@
         start_of_trailer_line_(0),
         trailer_length_(0),
         trailer_(nullptr),
-        invalid_chars_level_(InvalidCharsLevel::kOff),
-        http_validation_policy_(HttpValidationPolicy::CreateDefault()) {}
+        invalid_chars_level_(InvalidCharsLevel::kOff) {}
 
   ~BalsaFrame() override {}
 
diff --git a/quiche/balsa/balsa_frame_test.cc b/quiche/balsa/balsa_frame_test.cc
index 4b8f365..d89816b 100644
--- a/quiche/balsa/balsa_frame_test.cc
+++ b/quiche/balsa/balsa_frame_test.cc
@@ -576,8 +576,6 @@
 class HTTPBalsaFrameTest : public QuicheTest {
  protected:
   void SetUp() override {
-    balsa_frame_.set_http_validation_policy(
-        HttpValidationPolicy::CreateDefault());
     balsa_frame_.set_balsa_headers(&headers_);
     balsa_frame_.set_balsa_trailer(&trailer_);
     balsa_frame_.set_balsa_visitor(&visitor_mock_);
@@ -2464,8 +2462,6 @@
 class BalsaFrameParsingTest : public QuicheTest {
  protected:
   void SetUp() override {
-    balsa_frame_.set_http_validation_policy(
-        HttpValidationPolicy::CreateDefault());
     balsa_frame_.set_is_request(true);
     balsa_frame_.set_balsa_headers(&headers_);
     balsa_frame_.set_balsa_visitor(&visitor_mock_);
diff --git a/quiche/balsa/http_validation_policy.cc b/quiche/balsa/http_validation_policy.cc
deleted file mode 100644
index 5aab23b..0000000
--- a/quiche/balsa/http_validation_policy.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2022 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 "quiche/balsa/http_validation_policy.h"
-
-#include <tuple>
-
-#include "quiche/common/platform/api/quiche_logging.h"
-
-namespace quiche {
-
-HttpValidationPolicy::HttpValidationPolicy(bool enforce_all)
-    : enforce_all_(enforce_all) {}
-
-HttpValidationPolicy HttpValidationPolicy::CreateDefault() {
-  return HttpValidationPolicy(false);
-}
-
-bool HttpValidationPolicy::operator==(const HttpValidationPolicy& other) const {
-  return enforce_all_ == other.enforce_all_;
-}
-
-}  // namespace quiche
diff --git a/quiche/balsa/http_validation_policy.h b/quiche/balsa/http_validation_policy.h
index 89926c6..725f48e 100644
--- a/quiche/balsa/http_validation_policy.h
+++ b/quiche/balsa/http_validation_policy.h
@@ -12,42 +12,23 @@
 namespace quiche {
 
 // An HttpValidationPolicy captures policy choices affecting parsing of HTTP
-// requests.  It offers individual Boolean member functions to be consulted
-// during the parsing of an HTTP request.
-class QUICHE_EXPORT HttpValidationPolicy {
- public:
-  HttpValidationPolicy(bool enforce_all);
-
-  static HttpValidationPolicy CreateDefault();
-
+// requests.  It offers individual Boolean members to be consulted during the
+// parsing of an HTTP request.
+struct QUICHE_EXPORT HttpValidationPolicy {
   // https://tools.ietf.org/html/rfc7230#section-3.2.4 deprecates "folding"
   // of long header lines onto continuation lines.
-  bool disallow_header_continuation_lines() const { return enforce_all_; }
+  bool disallow_header_continuation_lines = false;
 
   // A valid header line requires a header name and a colon.
-  bool require_header_colon() const { return enforce_all_; }
+  bool require_header_colon = false;
 
   // https://tools.ietf.org/html/rfc7230#section-3.3.2 disallows multiple
   // Content-Length header fields with the same value.
-  bool disallow_multiple_content_length() const { return enforce_all_; }
+  bool disallow_multiple_content_length = false;
 
   // https://tools.ietf.org/html/rfc7230#section-3.3.2 disallows
   // Transfer-Encoding and Content-Length header fields together.
-  bool disallow_transfer_encoding_with_content_length() const {
-    return enforce_all_;
-  }
-
-  bool operator==(const HttpValidationPolicy& other) const;
-
-  friend QUICHE_EXPORT std::ostream& operator<<(
-      std::ostream& os, const HttpValidationPolicy& policy) {
-    os << "HttpValidationPolicy(enforce_all_=" << policy.enforce_all_ << ")";
-    return os;
-  }
-
- private:
-  // Enforce "everything": set for strictest possible parsing.
-  bool enforce_all_;
+  bool disallow_transfer_encoding_with_content_length = false;
 };
 
 }  // namespace quiche
