Add quiche_fuzztest shim to quiche/common/platform/

This CL also updates the structured headers fuzzer to use fuzztest.

PiperOrigin-RevId: 768142758
diff --git a/MODULE.bazel b/MODULE.bazel
index 9056d05..c8dbff9 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -28,6 +28,9 @@
 # Last updated 2025-02-25
 bazel_dep(name = "zlib", version = "1.3.1.bcr.5")
 
+# Last updated 2025-06-06
+bazel_dep(name = "fuzztest", version = "20250214.0")
+
 http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
 
 http_archive(
diff --git a/build/source_list.bzl b/build/source_list.bzl
index 5a8ee78..886e27a 100644
--- a/build/source_list.bzl
+++ b/build/source_list.bzl
@@ -772,6 +772,7 @@
 ]
 quiche_test_support_hdrs = [
     "common/platform/api/quiche_expect_bug.h",
+    "common/platform/api/quiche_fuzztest.h",
     "common/platform/api/quiche_test.h",
     "common/platform/api/quiche_test_loopback.h",
     "common/platform/api/quiche_test_output.h",
@@ -1509,6 +1510,7 @@
 ]
 default_platform_impl_test_support_hdrs = [
     "common/platform/default/quiche_platform_impl/quiche_expect_bug_impl.h",
+    "common/platform/default/quiche_platform_impl/quiche_fuzztest_impl.h",
     "common/platform/default/quiche_platform_impl/quiche_test_impl.h",
     "common/platform/default/quiche_platform_impl/quiche_test_loopback_impl.h",
     "common/platform/default/quiche_platform_impl/quiche_test_output_impl.h",
diff --git a/build/source_list.gni b/build/source_list.gni
index 89c4626..2db3feb 100644
--- a/build/source_list.gni
+++ b/build/source_list.gni
@@ -772,6 +772,7 @@
 ]
 quiche_test_support_hdrs = [
     "src/quiche/common/platform/api/quiche_expect_bug.h",
+    "src/quiche/common/platform/api/quiche_fuzztest.h",
     "src/quiche/common/platform/api/quiche_test.h",
     "src/quiche/common/platform/api/quiche_test_loopback.h",
     "src/quiche/common/platform/api/quiche_test_output.h",
@@ -1513,6 +1514,7 @@
 ]
 default_platform_impl_test_support_hdrs = [
     "src/quiche/common/platform/default/quiche_platform_impl/quiche_expect_bug_impl.h",
+    "src/quiche/common/platform/default/quiche_platform_impl/quiche_fuzztest_impl.h",
     "src/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.h",
     "src/quiche/common/platform/default/quiche_platform_impl/quiche_test_loopback_impl.h",
     "src/quiche/common/platform/default/quiche_platform_impl/quiche_test_output_impl.h",
diff --git a/build/source_list.json b/build/source_list.json
index 3a262e2..0809a88 100644
--- a/build/source_list.json
+++ b/build/source_list.json
@@ -771,6 +771,7 @@
   ],
   "quiche_test_support_hdrs": [
     "quiche/common/platform/api/quiche_expect_bug.h",
+    "quiche/common/platform/api/quiche_fuzztest.h",
     "quiche/common/platform/api/quiche_test.h",
     "quiche/common/platform/api/quiche_test_loopback.h",
     "quiche/common/platform/api/quiche_test_output.h",
@@ -1512,6 +1513,7 @@
   ],
   "default_platform_impl_test_support_hdrs": [
     "quiche/common/platform/default/quiche_platform_impl/quiche_expect_bug_impl.h",
+    "quiche/common/platform/default/quiche_platform_impl/quiche_fuzztest_impl.h",
     "quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.h",
     "quiche/common/platform/default/quiche_platform_impl/quiche_test_loopback_impl.h",
     "quiche/common/platform/default/quiche_platform_impl/quiche_test_output_impl.h"
diff --git a/quiche/BUILD.bazel b/quiche/BUILD.bazel
index 87cc6e3..552cc09 100644
--- a/quiche/BUILD.bazel
+++ b/quiche/BUILD.bazel
@@ -234,6 +234,7 @@
         "@com_google_absl//absl/types:span",
         "@com_google_absl//absl/types:variant",
         "@com_google_googletest//:gtest",
+        "@fuzztest//fuzztest",
     ],
 )
 
diff --git a/quiche/common/platform/api/quiche_fuzztest.h b/quiche/common/platform/api/quiche_fuzztest.h
new file mode 100644
index 0000000..1337cab
--- /dev/null
+++ b/quiche/common/platform/api/quiche_fuzztest.h
@@ -0,0 +1,10 @@
+// Copyright (c) 2025 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.
+
+#ifndef QUICHE_COMMON_PLATFORM_API_QUICHE_FUZZTEST_H_
+#define QUICHE_COMMON_PLATFORM_API_QUICHE_FUZZTEST_H_
+
+#include "quiche_platform_impl/quiche_fuzztest_impl.h"  // IWYU pragma: export
+
+#endif
diff --git a/quiche/common/platform/default/quiche_platform_impl/quiche_fuzztest_impl.h b/quiche/common/platform/default/quiche_platform_impl/quiche_fuzztest_impl.h
new file mode 100644
index 0000000..a45cdf6
--- /dev/null
+++ b/quiche/common/platform/default/quiche_platform_impl/quiche_fuzztest_impl.h
@@ -0,0 +1,6 @@
+#ifndef QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_FUZZTEST_IMPL_H_
+#define QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_FUZZTEST_IMPL_H_
+
+#include "fuzztest/fuzztest.h"  // IWYU pragma: export
+
+#endif  // QUICHE_COMMON_PLATFORM_DEFAULT_QUICHE_PLATFORM_IMPL_QUICHE_FUZZTEST_IMPL_H_
diff --git a/quiche/common/structured_headers_fuzzer.cc b/quiche/common/structured_headers_fuzzer.cc
index aefeea5..71aaa76 100644
--- a/quiche/common/structured_headers_fuzzer.cc
+++ b/quiche/common/structured_headers_fuzzer.cc
@@ -2,21 +2,24 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include <string>
+
 #include "absl/strings/string_view.h"
+#include "quiche/common/platform/api/quiche_fuzztest.h"
 #include "quiche/common/structured_headers.h"
 
 namespace quiche {
 namespace structured_headers {
 
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  absl::string_view input(reinterpret_cast<const char*>(data), size);
+void CanParseWithoutCrashing(absl::string_view input) {
   ParseItem(input);
   ParseListOfLists(input);
   ParseList(input);
   ParseDictionary(input);
   ParseParameterisedList(input);
-  return 0;
 }
+FUZZ_TEST(StructuredHeadersFuzzer, CanParseWithoutCrashing)
+    .WithDomains(fuzztest::Arbitrary<std::string>());
 
 }  // namespace structured_headers
 }  // namespace quiche
diff --git a/quiche/http2/core/http2_frame_decoder_adapter_fuzzer.cc b/quiche/http2/core/http2_frame_decoder_adapter_fuzzer.cc
index b54ecfa..7daa174 100644
--- a/quiche/http2/core/http2_frame_decoder_adapter_fuzzer.cc
+++ b/quiche/http2/core/http2_frame_decoder_adapter_fuzzer.cc
@@ -1,4 +1,4 @@
-#include "testing/fuzzing/fuzztest.h"
+#include "fuzztest/fuzztest.h"
 #include "quiche/http2/core/http2_frame_decoder_adapter.h"
 #include "quiche/http2/core/spdy_no_op_visitor.h"