Lift QuicByteCount and QuicEcnCodepoint into a new quiche/common/quiche_types.h.

Aliases to the new types are added in quic/core/quic_types.h for convenience,
but their uses in quiche/common/... are switched to the new types.

Other misc IWYU changes were made, which I tried to keep to a minimum and
warrant additional cleanup later.

PiperOrigin-RevId: 987557606
diff --git a/build/source_list.bzl b/build/source_list.bzl
index 5a39141..dd72020 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -65,6 +65,7 @@
     "common/quiche_status_utils.h",
     "common/quiche_string_tuple.h",
     "common/quiche_text_utils.h",
+    "common/quiche_types.h",
     "common/quiche_weak_ptr.h",
     "common/simple_buffer_allocator.h",
     "common/stable_block_list.h",
diff --git a/build/source_list.gni b/build/source_list.gni
index db07e97..7640e1a 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -65,6 +65,7 @@
     "src/quiche/common/quiche_status_utils.h",
     "src/quiche/common/quiche_string_tuple.h",
     "src/quiche/common/quiche_text_utils.h",
+    "src/quiche/common/quiche_types.h",
     "src/quiche/common/quiche_weak_ptr.h",
     "src/quiche/common/simple_buffer_allocator.h",
     "src/quiche/common/stable_block_list.h",
diff --git a/build/source_list.json b/build/source_list.json
index f9e60cf..4596010 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -64,6 +64,7 @@
     "quiche/common/quiche_status_utils.h",
     "quiche/common/quiche_string_tuple.h",
     "quiche/common/quiche_text_utils.h",
+    "quiche/common/quiche_types.h",
     "quiche/common/quiche_weak_ptr.h",
     "quiche/common/simple_buffer_allocator.h",
     "quiche/common/stable_block_list.h",
diff --git a/quiche/common/platform/api/quiche_udp_socket_platform_api.h b/quiche/common/platform/api/quiche_udp_socket_platform_api.h
index fd93e0d..518fc36 100644
--- a/quiche/common/platform/api/quiche_udp_socket_platform_api.h
+++ b/quiche/common/platform/api/quiche_udp_socket_platform_api.h
@@ -5,10 +5,13 @@
 #ifndef QUICHE_COMMON_PLATFORM_API_QUICHE_UDP_SOCKET_PLATFORM_API_H_
 #define QUICHE_COMMON_PLATFORM_API_QUICHE_UDP_SOCKET_PLATFORM_API_H_
 
+#include <cstddef>
+#include <cstdint>
+
 #include "quiche_platform_impl/quiche_udp_socket_platform_impl.h"
 
-#include "quiche/quic/core/quic_types.h"
 #include "quiche/common/quiche_ip_address_family.h"
+#include "quiche/common/quiche_types.h"
 
 namespace quiche {
 
@@ -35,7 +38,7 @@
 // associated error code.
 inline int GetEcnCmsgArgsPreserveDscp(
     const int fd, const quiche::IpAddressFamily address_family,
-    quic::QuicEcnCodepoint ecn_codepoint, int& type, void* value,
+    QuicheEcnCodepoint ecn_codepoint, int& type, void* value,
     socklen_t& value_len) {
   return GetEcnCmsgArgsPreserveDscpImpl(
       fd, ToPlatformAddressFamily(address_family),
diff --git a/quiche/common/quiche_mem_slice_storage.cc b/quiche/common/quiche_mem_slice_storage.cc
index 4a118e5..3921eb8 100644
--- a/quiche/common/quiche_mem_slice_storage.cc
+++ b/quiche/common/quiche_mem_slice_storage.cc
@@ -5,19 +5,23 @@
 #include "quiche/common/quiche_mem_slice_storage.h"
 
 #include <algorithm>
+#include <cstddef>
 #include <utility>
 
-#include "quiche/quic/core/quic_utils.h"
+#include "quiche/common/platform/api/quiche_logging.h"
+#include "quiche/common/quiche_buffer_allocator.h"
+#include "quiche/common/quiche_mem_slice.h"
+#include "quiche/common/quiche_types.h"
 
 namespace quiche {
 
 QuicheMemSliceStorage::QuicheMemSliceStorage(
     const struct iovec* iov, int iov_count, QuicheBufferAllocator* allocator,
-    const quic::QuicByteCount max_slice_len) {
+    const QuicheByteCount max_slice_len) {
   if (iov == nullptr) {
     return;
   }
-  quic::QuicByteCount write_len = 0;
+  QuicheByteCount write_len = 0;
   for (int i = 0; i < iov_count; ++i) {
     write_len += iov[i].iov_len;
   }
diff --git a/quiche/common/quiche_mem_slice_storage.h b/quiche/common/quiche_mem_slice_storage.h
index f3b0285..3e7410b 100644
--- a/quiche/common/quiche_mem_slice_storage.h
+++ b/quiche/common/quiche_mem_slice_storage.h
@@ -8,11 +8,11 @@
 #include <vector>
 
 #include "absl/types/span.h"
-#include "quiche/quic/core/quic_types.h"
 #include "quiche/common/platform/api/quiche_export.h"
-#include "quiche/common/platform/api/quiche_iovec.h"
+#include "quiche/common/platform/api/quiche_iovec.h"  // IWYU pragma: keep for iovec
 #include "quiche/common/quiche_buffer_allocator.h"
 #include "quiche/common/quiche_mem_slice.h"
+#include "quiche/common/quiche_types.h"
 
 namespace quiche {
 
@@ -22,7 +22,7 @@
  public:
   QuicheMemSliceStorage(const struct iovec* iov, int iov_count,
                         QuicheBufferAllocator* allocator,
-                        const quic::QuicByteCount max_slice_len);
+                        QuicheByteCount max_slice_len);
 
   QuicheMemSliceStorage(const QuicheMemSliceStorage& other) = delete;
   QuicheMemSliceStorage& operator=(const QuicheMemSliceStorage& other) = delete;
diff --git a/quiche/common/quiche_types.h b/quiche/common/quiche_types.h
new file mode 100644
index 0000000..bf2a14c
--- /dev/null
+++ b/quiche/common/quiche_types.h
@@ -0,0 +1,32 @@
+// Copyright 2026 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef QUICHE_COMMON_QUICHE_TYPES_H_
+#define QUICHE_COMMON_QUICHE_TYPES_H_
+
+#include <cstdint>
+
+namespace quiche {
+
+using QuicheByteCount = uint64_t;
+
+// The two bits in the IP header for Explicit Congestion Notification can take
+// one of four values.
+enum QuicheEcnCodepoint : uint8_t {
+  // The NOT-ECT codepoint, indicating the packet sender is not using (or the
+  // network has disabled) ECN.
+  ECN_NOT_ECT = 0,
+  // The ECT(1) codepoint, indicating the packet sender is using Low Latency,
+  // Low Loss, Scalable Throughput (L4S) ECN (RFC9330).
+  ECN_ECT1 = 1,
+  // The ECT(0) codepoint, indicating the packet sender is using classic ECN
+  // (RFC3168).
+  ECN_ECT0 = 2,
+  // The CE ("Congestion Experienced") codepoint, indicating the packet sender
+  // is using ECN, and a router is experiencing congestion.
+  ECN_CE = 3,
+};
+}  // namespace quiche
+
+#endif  // QUICHE_COMMON_QUICHE_TYPES_H_
diff --git a/quiche/quic/core/quic_types.h b/quiche/quic/core/quic_types.h
index d944929..e1fe120 100644
--- a/quiche/quic/core/quic_types.h
+++ b/quiche/quic/core/quic_types.h
@@ -19,12 +19,13 @@
 #include "absl/strings/str_format.h"
 #include "absl/strings/string_view.h"
 #include "openssl/ssl.h"
-#include "quiche/quic/core/quic_connection_id.h"
-#include "quiche/quic/core/quic_error_codes.h"
+#include "quiche/quic/core/quic_connection_id.h"  // IWYU pragma: export
+#include "quiche/quic/core/quic_error_codes.h"    // IWYU pragma: export
 #include "quiche/quic/core/quic_packet_number.h"
 #include "quiche/quic/core/quic_time.h"
-#include "quiche/quic/platform/api/quic_flags.h"
+#include "quiche/quic/platform/api/quic_flags.h"  // IWYU pragma: export
 #include "quiche/common/platform/api/quiche_export.h"
+#include "quiche/common/quiche_types.h"
 #include "quiche/web_transport/web_transport.h"
 
 namespace quic {
@@ -43,7 +44,7 @@
 // Count of stream IDs. Used in MAX_STREAMS and STREAMS_BLOCKED frames.
 using QuicStreamCount = QuicStreamId;
 
-using QuicByteCount = uint64_t;
+using QuicByteCount = quiche::QuicheByteCount;
 using QuicPacketCount = uint64_t;
 using QuicPublicResetNonceProof = uint64_t;
 using QuicStreamOffset = uint64_t;
@@ -969,22 +970,11 @@
 QUICHE_EXPORT std::ostream& operator<<(std::ostream& os,
                                        const ParsedClientHello& parsed_chlo);
 
-// The two bits in the IP header for Explicit Congestion Notification can take
-// one of four values.
-enum QuicEcnCodepoint : uint8_t {
-  // The NOT-ECT codepoint, indicating the packet sender is not using (or the
-  // network has disabled) ECN.
-  ECN_NOT_ECT = 0,
-  // The ECT(1) codepoint, indicating the packet sender is using Low Latency,
-  // Low Loss, Scalable Throughput (L4S) ECN (RFC9330).
-  ECN_ECT1 = 1,
-  // The ECT(0) codepoint, indicating the packet sender is using classic ECN
-  // (RFC3168).
-  ECN_ECT0 = 2,
-  // The CE ("Congestion Experienced") codepoint, indicating the packet sender
-  // is using ECN, and a router is experiencing congestion.
-  ECN_CE = 3,
-};
+using QuicEcnCodepoint = quiche::QuicheEcnCodepoint;
+using quiche::ECN_CE;
+using quiche::ECN_ECT0;
+using quiche::ECN_ECT1;
+using quiche::ECN_NOT_ECT;
 
 QUICHE_EXPORT std::string EcnCodepointToString(QuicEcnCodepoint ecn);