Internal change

PiperOrigin-RevId: 463834657
diff --git a/build/source_list.bzl b/build/source_list.bzl
index e54a569..3a02ad0 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -50,6 +50,7 @@
     "common/quiche_endian.h",
     "common/quiche_linked_hash_map.h",
     "common/quiche_mem_slice_storage.h",
+    "common/quiche_protocol_flags_list.h",
     "common/quiche_text_utils.h",
     "common/simple_buffer_allocator.h",
     "common/structured_headers.h",
diff --git a/build/source_list.gni b/build/source_list.gni
index 450eeb8..c1a87cf 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -50,6 +50,7 @@
     "src/quiche/common/quiche_endian.h",
     "src/quiche/common/quiche_linked_hash_map.h",
     "src/quiche/common/quiche_mem_slice_storage.h",
+    "src/quiche/common/quiche_protocol_flags_list.h",
     "src/quiche/common/quiche_text_utils.h",
     "src/quiche/common/simple_buffer_allocator.h",
     "src/quiche/common/structured_headers.h",
diff --git a/build/source_list.json b/build/source_list.json
index ef178a2..ecc662c 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -49,6 +49,7 @@
     "quiche/common/quiche_endian.h",
     "quiche/common/quiche_linked_hash_map.h",
     "quiche/common/quiche_mem_slice_storage.h",
+    "quiche/common/quiche_protocol_flags_list.h",
     "quiche/common/quiche_text_utils.h",
     "quiche/common/simple_buffer_allocator.h",
     "quiche/common/structured_headers.h",
diff --git a/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc b/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc
index b6cebb1..d753bd7 100644
--- a/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc
+++ b/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc
@@ -7,3 +7,7 @@
 #define QUIC_FLAG(flag, value) bool FLAGS_##flag = value;
 #include "quiche/quic/core/quic_flags_list.h"
 #undef QUIC_FLAG
+
+#define QUICHE_PROTOCOL_FLAG(type, flag, value, doc) type FLAGS_##flag = value;
+#include "quiche/common/quiche_protocol_flags_list.h"
+#undef QUICHE_PROTOCOL_FLAG
diff --git a/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.h b/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.h
index a926fb8..2ef8b61 100644
--- a/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.h
+++ b/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.h
@@ -17,6 +17,12 @@
 #include "quiche/quic/core/quic_flags_list.h"
 #undef QUIC_FLAG
 
+// Protocol flags.
+#define QUICHE_PROTOCOL_FLAG(type, flag, ...) \
+  QUICHE_EXPORT_PRIVATE extern type FLAGS_##flag;
+#include "quiche/common/quiche_protocol_flags_list.h"
+#undef QUICHE_PROTOCOL_FLAG
+
 inline bool GetQuicheFlagImpl(bool flag) { return flag; }
 inline int32_t GetQuicheFlagImpl(int32_t flag) { return flag; }
 inline int64_t GetQuicheFlagImpl(int64_t flag) { return flag; }
@@ -26,7 +32,7 @@
 #define SetQuicheFlagImpl(flag, value) ((flag) = (value))
 
 // ------------------------------------------------------------------------
-// QUIC feature flags implementation.
+// QUICHE feature flags implementation.
 // ------------------------------------------------------------------------
 #define QUICHE_RELOADABLE_FLAG(flag) FLAGS_quic_reloadable_flag_##flag
 #define QUICHE_RESTART_FLAG(flag) FLAGS_quic_restart_flag_##flag
diff --git a/quiche/common/quiche_protocol_flags_list.h b/quiche/common/quiche_protocol_flags_list.h
new file mode 100644
index 0000000..90d21a3
--- /dev/null
+++ b/quiche/common/quiche_protocol_flags_list.h
@@ -0,0 +1,15 @@
+// Copyright (c) 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.
+
+// NOLINT(build/header_guard)
+// This file intentionally does not have header guards, it's intended to be
+// included multiple times, each time with a different definition of
+// QUICHE_PROTOCOL_FLAG.
+
+#if defined(QUICHE_PROTOCOL_FLAG)
+
+QUICHE_PROTOCOL_FLAG(bool, quiche_oghttp2_debug_trace, false,
+                     "If true, emits trace logs for HTTP/2 events.")
+
+#endif
diff --git a/quiche/http2/adapter/oghttp2_session.cc b/quiche/http2/adapter/oghttp2_session.cc
index 13e001f..73f4e96 100644
--- a/quiche/http2/adapter/oghttp2_session.cc
+++ b/quiche/http2/adapter/oghttp2_session.cc
@@ -24,14 +24,6 @@
 
 using ::spdy::SpdySettingsIR;
 
-// #define OGHTTP2_DEBUG_TRACE 1
-
-#ifdef OGHTTP2_DEBUG_TRACE
-const bool kTraceLoggingEnabled = true;
-#else
-const bool kTraceLoggingEnabled = false;
-#endif
-
 const uint32_t kMaxAllowedMetadataFrameSize = 65536u;
 const uint32_t kDefaultHpackTableCapacity = 4096u;
 const uint32_t kMaximumHpackTableCapacity = 65536u;
@@ -343,10 +335,14 @@
       event_forwarder_([this]() { return !latched_error_; }, *this),
       receive_logger_(
           &event_forwarder_, TracePerspectiveAsString(options.perspective),
-          []() { return kTraceLoggingEnabled; }, this),
+          [logging_enabled = GetQuicheFlag(
+               FLAGS_quiche_oghttp2_debug_trace)]() { return logging_enabled; },
+          this),
       send_logger_(
           TracePerspectiveAsString(options.perspective),
-          []() { return kTraceLoggingEnabled; }, this),
+          [logging_enabled = GetQuicheFlag(
+               FLAGS_quiche_oghttp2_debug_trace)]() { return logging_enabled; },
+          this),
       headers_handler_(*this, visitor),
       noop_headers_handler_(/*listener=*/nullptr),
       connection_window_manager_(
diff --git a/quiche/http2/adapter/oghttp2_session.h b/quiche/http2/adapter/oghttp2_session.h
index 1d896a3..e28af7a 100644
--- a/quiche/http2/adapter/oghttp2_session.h
+++ b/quiche/http2/adapter/oghttp2_session.h
@@ -23,6 +23,7 @@
 #include "quiche/http2/core/priority_write_scheduler.h"
 #include "quiche/common/platform/api/quiche_bug_tracker.h"
 #include "quiche/common/platform/api/quiche_export.h"
+#include "quiche/common/platform/api/quiche_flags.h"
 #include "quiche/common/quiche_linked_hash_map.h"
 #include "quiche/spdy/core/http2_frame_decoder_adapter.h"
 #include "quiche/spdy/core/http2_header_block.h"