xref: /aosp_15_r20/external/cronet/net/third_party/quiche/BUILD.gn (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1# Copyright 2020 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5# Build file for QUICHE, <https://quiche.googlesource.com/quiche/>
6#
7# The following build targets are defined:
8#   - quiche -- the part of QUICHE that is shipped within Chromium proper.
9#   - *_tool_support -- support code used in CLI tools and unit tests.
10#   - *_test_support -- support code only used in unit tests.
11#   - quiche_tests -- all of the QUICHE test targets.
12#
13# There are two kinds of build target: quiche_ and epoll_; quiche_ targets are
14# built on all platforms, epoll_ targets are only built on Linux and certain
15# similar platforms.
16
17# Dependency graph of the key targets in this file:
18#
19#     quiche <--- quiche_tool_support <--- quiche_test_support <--- quiche_tests
20#                          ^                        ^                     |
21#                          |                        |                     |
22#                          |                        |                     |
23#                  epoll_tool_support <---  epoll_test_support <----------+ (*)
24#
25#             (*) only used on platforms where epoll tests are built
26
27import("//build/config/chromeos/ui_mode.gni")
28import("//net/third_party/quiche/src/build/source_list.gni")
29import("//testing/libfuzzer/fuzzer_test.gni")
30import("//third_party/protobuf/proto_library.gni")
31
32build_epoll_based_tools = is_linux || is_chromeos
33
34config("quiche_internal_config") {
35  cflags = []
36  if (is_clang) {
37    cflags += [ "-Wno-sign-compare" ]
38  }
39}
40
41config("quiche_config") {
42  include_dirs = [
43    # The ordering here is important, since headers in overrides/ replace
44    # headers in src/common/platform/default.
45    "overrides",
46    "src/quiche/common/platform/default",
47    "src",
48  ]
49}
50
51component("quiche") {
52  # TODO(crbug.com/325102878): Remove once usage of the deprecated version of
53  # absl::HexStringToBytes have been removed.
54  cflags = [ "-Wno-deprecated-declarations" ]
55  sources = [
56              "overrides/quiche_platform_impl/quiche_bug_tracker_impl.h",
57              "overrides/quiche_platform_impl/quiche_client_stats_impl.h",
58              "overrides/quiche_platform_impl/quiche_containers_impl.h",
59              "overrides/quiche_platform_impl/quiche_export_impl.h",
60              "overrides/quiche_platform_impl/quiche_iovec_impl.h",
61              "overrides/quiche_platform_impl/quiche_logging_impl.h",
62              "overrides/quiche_platform_impl/quiche_mutex_impl.cc",
63              "overrides/quiche_platform_impl/quiche_mutex_impl.h",
64              "overrides/quiche_platform_impl/quiche_reference_counted_impl.h",
65              "overrides/quiche_platform_impl/quiche_server_stats_impl.h",
66              "overrides/quiche_platform_impl/quiche_stack_trace_impl.cc",
67              "overrides/quiche_platform_impl/quiche_stack_trace_impl.h",
68              "overrides/quiche_platform_impl/quiche_time_utils_impl.cc",
69              "overrides/quiche_platform_impl/quiche_time_utils_impl.h",
70              "overrides/quiche_platform_impl/quiche_url_utils_impl.cc",
71              "overrides/quiche_platform_impl/quiche_url_utils_impl.h",
72              "src/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.cc",
73              "src/quiche/common/platform/default/quiche_platform_impl/quiche_flags_impl.h",
74              "src/quiche/common/platform/default/quiche_platform_impl/quiche_prefetch_impl.h",
75              "src/quiche/http2/hpack/hpack_static_table_entries.inc",
76            ] + quiche_core_hdrs + quiche_core_srcs + binary_http_srcs +
77            binary_http_hdrs + oblivious_http_srcs + oblivious_http_hdrs
78
79  configs += [ ":quiche_internal_config" ]
80  all_dependent_configs = [ ":quiche_config" ]
81
82  deps = [
83    "//net:uri_template",
84    "//third_party/protobuf:protobuf_lite",
85    "//third_party/zlib",
86  ]
87
88  public_deps = [
89    ":net_quic_proto",
90    "//base",
91    "//third_party/abseil-cpp:absl",
92    "//third_party/boringssl",
93    "//url",
94  ]
95
96  defines = [ "IS_QUICHE_IMPL" ]
97}
98
99proto_library("net_quic_proto") {
100  visibility = [ ":quiche" ]
101
102  sources = [
103    "src/quiche/quic/core/proto/cached_network_parameters.proto",
104    "src/quiche/quic/core/proto/crypto_server_config.proto",
105    "src/quiche/quic/core/proto/source_address_token.proto",
106  ]
107  cc_generator_options = "dllexport_decl=COMPONENT_EXPORT(QUICHE):"
108  cc_include = "base/component_export.h"
109  component_build_force_source_set = true
110
111  proto_in_dir = "src"
112
113  deps = [ "//base" ]
114
115  defines = [ "IS_QUICHE_IMPL" ]
116
117  extra_configs = [ "//build/config/compiler:wexit_time_destructors" ]
118}
119
120proto_library("net_quic_test_tools_proto") {
121  visibility = [ "//net:net_public_deps" ]
122
123  sources = [ "src/quiche/quic/test_tools/send_algorithm_test_result.proto" ]
124  cc_generator_options = "dllexport_decl=NET_EXPORT_PRIVATE:"
125  cc_include = "net/base/net_export.h"
126  component_build_force_source_set = true
127
128  deps = [ "//net:net_export_header" ]
129
130  defines = [ "NET_IMPLEMENTATION" ]
131
132  extra_configs = [ "//build/config/compiler:wexit_time_destructors" ]
133}
134
135if (build_epoll_based_tools) {
136  static_library("epoll_tool_support") {
137    # TODO(crbug.com/325102878): Remove once usage of the deprecated version of
138    # absl::HexStringToBytes have been removed.
139    cflags = [ "-Wno-deprecated-declarations" ]
140    testonly = true
141    sources = [
142                "overrides/quiche_platform_impl/quiche_udp_socket_platform_impl.h",
143                "src/quiche/common/platform/default/quiche_platform_impl/quiche_stream_buffer_allocator_impl.h",
144              ] + io_tool_support_srcs + io_tool_support_hdrs
145
146    configs += [ ":quiche_internal_config" ]
147    public_configs = [ ":quiche_config" ]
148
149    deps = [
150      ":quiche_tool_support",
151      "//base",
152      "//net",
153      "//third_party/boringssl",
154    ]
155  }
156
157  executable("epoll_quic_client") {
158    testonly = true
159    sources = [
160      "src/quiche/quic/tools/quic_client_bin.cc",
161      "src/quiche/quic/tools/quic_epoll_client_factory.cc",
162      "src/quiche/quic/tools/quic_epoll_client_factory.h",
163    ]
164
165    configs += [ ":quiche_internal_config" ]
166    public_configs = [ ":quiche_config" ]
167
168    deps = [
169      ":epoll_tool_support",
170      ":quic_client_core",
171      ":quiche_tool_support",
172      "//base",
173      "//net",
174      "//third_party/boringssl",
175    ]
176  }
177
178  executable("epoll_quic_server") {
179    testonly = true
180    sources = [
181      "src/quiche/quic/tools/quic_server_bin.cc",
182      "src/quiche/quic/tools/quic_server_factory.cc",
183      "src/quiche/quic/tools/quic_server_factory.h",
184    ]
185
186    configs += [ ":quiche_internal_config" ]
187    public_configs = [ ":quiche_config" ]
188
189    deps = [
190      ":epoll_tool_support",
191      ":quic_server_core",
192      ":quiche_tool_support",
193      "//base",
194      "//net",
195      "//third_party/boringssl",
196    ]
197  }
198
199  executable("quic_client_interop_test") {
200    testonly = true
201    sources = [ "src/quiche/quic/tools/quic_client_interop_test_bin.cc" ]
202
203    configs += [ ":quiche_internal_config" ]
204    public_configs = [ ":quiche_config" ]
205
206    deps = [
207      ":epoll_tool_support",
208      ":quiche_test_support",
209      ":quiche_tool_support",
210      "//net",
211    ]
212  }
213
214  executable("masque_client") {
215    testonly = true
216
217    # TODO(crbug.com/325102878): Remove once usage of the deprecated version of
218    # absl::HexStringToBytes have been removed.
219    cflags = [ "-Wno-deprecated-declarations" ]
220    sources = [ "src/quiche/quic/masque/masque_client_bin.cc" ]
221
222    configs += [ ":quiche_internal_config" ]
223    public_configs = [ ":quiche_config" ]
224
225    deps = [
226      ":epoll_tool_support",
227      ":quiche_tool_support",
228      "//net",
229      "//third_party/boringssl",
230      "//third_party/protobuf:protobuf_lite",
231    ]
232  }
233
234  executable("masque_server") {
235    testonly = true
236    sources = [ "src/quiche/quic/masque/masque_server_bin.cc" ]
237
238    configs += [ ":quiche_internal_config" ]
239    public_configs = [ ":quiche_config" ]
240
241    deps = [
242      ":epoll_tool_support",
243      ":quiche_tool_support",
244      "//net",
245      "//third_party/boringssl",
246      "//third_party/protobuf:protobuf_lite",
247    ]
248  }
249
250  static_library("epoll_test_support") {
251    testonly = true
252    sources = io_test_support_srcs + io_test_support_hdrs
253
254    configs += [ ":quiche_internal_config" ]
255    public_configs = [ ":quiche_config" ]
256
257    deps = [
258      ":epoll_tool_support",
259      ":quiche_test_support",
260      ":quiche_tool_support",
261      "//base",
262      "//net",
263      "//net:gtest_util",
264      "//testing/gmock",
265      "//testing/gtest",
266    ]
267  }
268}
269
270static_library("quiche_test_support") {
271  testonly = true
272
273  # TODO(crbug.com/325102878): Remove once usage of the deprecated version of
274  # absl::HexStringToBytes have been removed.
275  cflags = [ "-Wno-deprecated-declarations" ]
276  sources = [
277              "overrides/quiche_platform_impl/quiche_expect_bug_impl.h",
278              "overrides/quiche_platform_impl/quiche_mock_log_impl.h",
279              "overrides/quiche_platform_impl/quiche_test_helpers_impl.cc",
280              "overrides/quiche_platform_impl/quiche_test_helpers_impl.h",
281              "overrides/quiche_platform_impl/quiche_test_impl.cc",
282              "overrides/quiche_platform_impl/quiche_test_impl.h",
283              "overrides/quiche_platform_impl/quiche_test_output_impl.cc",
284              "overrides/quiche_platform_impl/quiche_test_output_impl.h",
285              "src/quiche/common/platform/default/quiche_platform_impl/quiche_test_loopback_impl.cc",
286              "src/quiche/common/platform/default/quiche_platform_impl/quiche_test_loopback_impl.h",
287            ] + quiche_test_support_srcs + quiche_test_support_hdrs
288
289  configs += [ ":quiche_internal_config" ]
290  public_configs = [ ":quiche_config" ]
291
292  deps = [
293    ":quiche",
294    ":quiche_tool_support",
295    "//base",
296    "//crypto:test_support",
297    "//net:quic_test_flags_utils",
298    "//net:test_support",
299    "//testing/gmock",
300    "//testing/gtest",
301    "//third_party/boringssl",
302    "//third_party/protobuf:protobuf_lite",
303  ]
304}
305
306static_library("quiche_tool_support") {
307  testonly = true
308  sources = [
309              "overrides/quiche_platform_impl/quiche_command_line_flags_impl.cc",
310              "overrides/quiche_platform_impl/quiche_command_line_flags_impl.h",
311              "overrides/quiche_platform_impl/quiche_default_proof_providers_impl.cc",
312              "overrides/quiche_platform_impl/quiche_default_proof_providers_impl.h",
313              "overrides/quiche_platform_impl/quiche_system_event_loop_impl.h",
314              "src/quiche/common/platform/default/quiche_platform_impl/quiche_file_utils_impl.cc",
315              "src/quiche/common/platform/default/quiche_platform_impl/quiche_file_utils_impl.h",
316            ] + quiche_tool_support_srcs + quiche_tool_support_hdrs
317
318  configs += [ ":quiche_internal_config" ]
319  public_configs = [ ":quiche_config" ]
320
321  deps = [
322    "//base",
323    "//net",
324    "//third_party/protobuf:protobuf_lite",
325    "//third_party/quic_trace:quic_trace_proto",
326    "//url",
327  ]
328}
329
330# QUICHE-provided CLI tools that don't use epoll.
331if (!is_ios) {
332  # The two libraries below, quic_client_core and quic_server_core, define
333  # mutually exclusive command-line flags, and thus any target depending
334  # directly on both will fail to build.  Only executable targets should depend
335  # on those.
336  source_set("quic_client_core") {
337    testonly = true
338
339    # TODO(crbug.com/325102878): Remove once usage of the deprecated version of
340    # absl::HexStringToBytes have been removed.
341    cflags = [ "-Wno-deprecated-declarations" ]
342    sources = [
343      "src/quiche/quic/tools/quic_toy_client.cc",
344      "src/quiche/quic/tools/quic_toy_client.h",
345    ]
346
347    configs += [ ":quiche_internal_config" ]
348    public_configs = [ ":quiche_config" ]
349
350    deps = [
351      "//net",
352      "//net:quic_test_tools",
353      "//net:simple_quic_tools",
354    ]
355  }
356  source_set("quic_server_core") {
357    testonly = true
358    sources = [
359      "src/quiche/quic/tools/quic_toy_server.cc",
360      "src/quiche/quic/tools/quic_toy_server.h",
361    ]
362
363    configs += [ ":quiche_internal_config" ]
364    public_configs = [ ":quiche_config" ]
365
366    deps = [
367      "//net",
368      "//net:simple_quic_tools",
369    ]
370  }
371
372  executable("quic_packet_printer") {
373    testonly = true
374
375    # TODO(crbug.com/325102878): Remove once usage of the deprecated version of
376    # absl::HexStringToBytes have been removed.
377    cflags = [ "-Wno-deprecated-declarations" ]
378    sources = [ "src/quiche/quic/tools/quic_packet_printer_bin.cc" ]
379
380    configs += [ ":quiche_internal_config" ]
381    public_configs = [ ":quiche_config" ]
382
383    deps = [
384      "//base",
385      "//build/win:default_exe_manifest",
386      "//net",
387      "//net:simple_quic_tools",
388      "//third_party/boringssl",
389      "//third_party/protobuf:protobuf_lite",
390    ]
391  }
392
393  executable("quic_crypto_message_printer") {
394    testonly = true
395
396    # TODO(crbug.com/325102878): Remove once usage of the deprecated version of
397    # absl::HexStringToBytes have been removed.
398    cflags = [ "-Wno-deprecated-declarations" ]
399    sources = [ "src/quiche/quic/tools/crypto_message_printer_bin.cc" ]
400
401    configs += [ ":quiche_internal_config" ]
402    public_configs = [ ":quiche_config" ]
403
404    deps = [
405      "//base",
406      "//build/win:default_exe_manifest",
407      "//net",
408      "//net:simple_quic_tools",
409      "//third_party/boringssl",
410      "//third_party/protobuf:protobuf_lite",
411    ]
412  }
413
414  executable("quic_reject_reason_decoder") {
415    testonly = true
416    sources = [ "src/quiche/quic/tools/quic_reject_reason_decoder_bin.cc" ]
417
418    configs += [ ":quiche_internal_config" ]
419    public_configs = [ ":quiche_config" ]
420
421    deps = [
422      "//base",
423      "//build/win:default_exe_manifest",
424      "//net",
425      "//net:simple_quic_tools",
426      "//third_party/boringssl",
427      "//third_party/protobuf:protobuf_lite",
428    ]
429  }
430
431  executable("qpack_offline_decoder") {
432    testonly = true
433
434    configs += [ ":quiche_internal_config" ]
435    public_configs = [ ":quiche_config" ]
436
437    sources = [ "src/quiche/quic/tools/qpack_offline_decoder_bin.cc" ]
438    deps = [
439      "//base",
440      "//net",
441      "//net:quic_test_tools",
442      "//net:simple_quic_tools",
443      "//testing/gmock",
444    ]
445  }
446}
447
448bundle_data("test_data") {
449  visibility = [ ":quiche_tests" ]
450  testonly = true
451  sources = [
452    "src/quiche/common/platform/api/testdir/README.md",
453    "src/quiche/common/platform/api/testdir/a/b/c/d/e",
454    "src/quiche/common/platform/api/testdir/a/subdir/testfile",
455    "src/quiche/common/platform/api/testdir/a/z",
456    "src/quiche/common/platform/api/testdir/testfile",
457  ]
458  outputs = [ "{{bundle_resources_dir}}/" +
459              "{{source_root_relative_dir}}/{{source_file_part}}" ]
460}
461
462source_set("quiche_tests") {
463  testonly = true
464
465  # TODO(crbug.com/325102878): Remove once usage of the deprecated version of
466  # absl::HexStringToBytes have been removed.
467  cflags = [ "-Wno-deprecated-declarations" ]
468  sources = [
469    "src/quiche/binary_http/binary_http_message_test.cc",
470    "src/quiche/blind_sign_auth/blind_sign_auth_test.cc",
471    "src/quiche/blind_sign_auth/cached_blind_sign_auth_test.cc",
472    "src/quiche/common/btree_scheduler_test.cc",
473    "src/quiche/common/capsule_test.cc",
474    "src/quiche/common/http/http_header_block_test.cc",
475    "src/quiche/common/http/http_header_storage_test.cc",
476    "src/quiche/common/masque/connect_ip_datagram_payload_test.cc",
477    "src/quiche/common/masque/connect_udp_datagram_payload_test.cc",
478    "src/quiche/common/platform/api/quiche_file_utils_test.cc",
479    "src/quiche/common/platform/api/quiche_hostname_utils_test.cc",
480    "src/quiche/common/platform/api/quiche_lower_case_string_test.cc",
481    "src/quiche/common/platform/api/quiche_mem_slice_test.cc",
482    "src/quiche/common/platform/api/quiche_reference_counted_test.cc",
483    "src/quiche/common/platform/api/quiche_stack_trace_test.cc",
484    "src/quiche/common/platform/api/quiche_time_utils_test.cc",
485    "src/quiche/common/platform/api/quiche_url_utils_test.cc",
486    "src/quiche/common/print_elements_test.cc",
487    "src/quiche/common/quiche_buffer_allocator_test.cc",
488    "src/quiche/common/quiche_callbacks_test.cc",
489    "src/quiche/common/quiche_circular_deque_test.cc",
490    "src/quiche/common/quiche_data_reader_test.cc",
491    "src/quiche/common/quiche_data_writer_test.cc",
492    "src/quiche/common/quiche_endian_test.cc",
493    "src/quiche/common/quiche_ip_address_test.cc",
494    "src/quiche/common/quiche_linked_hash_map_test.cc",
495    "src/quiche/common/quiche_mem_slice_storage_test.cc",
496    "src/quiche/common/quiche_random_test.cc",
497    "src/quiche/common/quiche_simple_arena_test.cc",
498    "src/quiche/common/quiche_text_utils_test.cc",
499    "src/quiche/common/simple_buffer_allocator_test.cc",
500    "src/quiche/common/structured_headers_generated_test.cc",
501    "src/quiche/common/structured_headers_test.cc",
502    "src/quiche/common/test_tools/mock_streams_test.cc",
503    "src/quiche/common/test_tools/quiche_test_utils_test.cc",
504    "src/quiche/common/wire_serialization_test.cc",
505    "src/quiche/http2/adapter/event_forwarder_test.cc",
506    "src/quiche/http2/adapter/header_validator_test.cc",
507    "src/quiche/http2/adapter/noop_header_validator_test.cc",
508    "src/quiche/http2/adapter/oghttp2_adapter_metadata_test.cc",
509    "src/quiche/http2/adapter/oghttp2_adapter_test.cc",
510    "src/quiche/http2/adapter/oghttp2_session_test.cc",
511    "src/quiche/http2/adapter/oghttp2_util_test.cc",
512    "src/quiche/http2/adapter/recording_http2_visitor_test.cc",
513    "src/quiche/http2/adapter/window_manager_test.cc",
514    "src/quiche/http2/core/priority_write_scheduler_test.cc",
515    "src/quiche/http2/decoder/decode_buffer_test.cc",
516    "src/quiche/http2/decoder/decode_http2_structures_test.cc",
517    "src/quiche/http2/decoder/http2_frame_decoder_test.cc",
518    "src/quiche/http2/decoder/http2_structure_decoder_test.cc",
519    "src/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder_test.cc",
520    "src/quiche/http2/decoder/payload_decoders/continuation_payload_decoder_test.cc",
521    "src/quiche/http2/decoder/payload_decoders/data_payload_decoder_test.cc",
522    "src/quiche/http2/decoder/payload_decoders/goaway_payload_decoder_test.cc",
523    "src/quiche/http2/decoder/payload_decoders/headers_payload_decoder_test.cc",
524    "src/quiche/http2/decoder/payload_decoders/ping_payload_decoder_test.cc",
525    "src/quiche/http2/decoder/payload_decoders/priority_payload_decoder_test.cc",
526    "src/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder_test.cc",
527    "src/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder_test.cc",
528    "src/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder_test.cc",
529    "src/quiche/http2/decoder/payload_decoders/settings_payload_decoder_test.cc",
530    "src/quiche/http2/decoder/payload_decoders/unknown_payload_decoder_test.cc",
531    "src/quiche/http2/decoder/payload_decoders/window_update_payload_decoder_test.cc",
532    "src/quiche/http2/hpack/decoder/hpack_block_collector_test.cc",
533    "src/quiche/http2/hpack/decoder/hpack_block_decoder_test.cc",
534    "src/quiche/http2/hpack/decoder/hpack_decoder_state_test.cc",
535    "src/quiche/http2/hpack/decoder/hpack_decoder_string_buffer_test.cc",
536    "src/quiche/http2/hpack/decoder/hpack_decoder_tables_test.cc",
537    "src/quiche/http2/hpack/decoder/hpack_decoder_test.cc",
538    "src/quiche/http2/hpack/decoder/hpack_entry_collector_test.cc",
539    "src/quiche/http2/hpack/decoder/hpack_entry_decoder_test.cc",
540    "src/quiche/http2/hpack/decoder/hpack_entry_type_decoder_test.cc",
541    "src/quiche/http2/hpack/decoder/hpack_string_decoder_test.cc",
542    "src/quiche/http2/hpack/decoder/hpack_whole_entry_buffer_test.cc",
543    "src/quiche/http2/hpack/http2_hpack_constants_test.cc",
544    "src/quiche/http2/hpack/huffman/hpack_huffman_decoder_test.cc",
545    "src/quiche/http2/hpack/huffman/hpack_huffman_encoder_test.cc",
546    "src/quiche/http2/hpack/huffman/hpack_huffman_transcoder_test.cc",
547    "src/quiche/http2/hpack/varint/hpack_varint_decoder_test.cc",
548    "src/quiche/http2/hpack/varint/hpack_varint_encoder_test.cc",
549    "src/quiche/http2/hpack/varint/hpack_varint_round_trip_test.cc",
550    "src/quiche/http2/http2_constants_test.cc",
551    "src/quiche/http2/http2_structures_test.cc",
552    "src/quiche/http2/test_tools/hpack_block_builder_test.cc",
553    "src/quiche/http2/test_tools/hpack_example_test.cc",
554    "src/quiche/http2/test_tools/http2_frame_builder_test.cc",
555    "src/quiche/http2/test_tools/http2_random_test.cc",
556    "src/quiche/http2/test_tools/random_decoder_test_base_test.cc",
557    "src/quiche/oblivious_http/buffers/oblivious_http_integration_test.cc",
558    "src/quiche/oblivious_http/buffers/oblivious_http_request_test.cc",
559    "src/quiche/oblivious_http/buffers/oblivious_http_response_test.cc",
560    "src/quiche/oblivious_http/common/oblivious_http_header_key_config_test.cc",
561    "src/quiche/oblivious_http/oblivious_http_client_test.cc",
562    "src/quiche/oblivious_http/oblivious_http_gateway_test.cc",
563    "src/quiche/quic/core/congestion_control/bandwidth_sampler_test.cc",
564    "src/quiche/quic/core/congestion_control/bbr2_simulator_test.cc",
565    "src/quiche/quic/core/congestion_control/bbr_sender_test.cc",
566    "src/quiche/quic/core/congestion_control/cubic_bytes_test.cc",
567    "src/quiche/quic/core/congestion_control/general_loss_algorithm_test.cc",
568    "src/quiche/quic/core/congestion_control/hybrid_slow_start_test.cc",
569    "src/quiche/quic/core/congestion_control/pacing_sender_test.cc",
570    "src/quiche/quic/core/congestion_control/prr_sender_test.cc",
571    "src/quiche/quic/core/congestion_control/rtt_stats_test.cc",
572    "src/quiche/quic/core/congestion_control/send_algorithm_test.cc",
573    "src/quiche/quic/core/congestion_control/tcp_cubic_sender_bytes_test.cc",
574    "src/quiche/quic/core/congestion_control/uber_loss_algorithm_test.cc",
575    "src/quiche/quic/core/congestion_control/windowed_filter_test.cc",
576    "src/quiche/quic/core/crypto/aes_128_gcm_12_decrypter_test.cc",
577    "src/quiche/quic/core/crypto/aes_128_gcm_12_encrypter_test.cc",
578    "src/quiche/quic/core/crypto/aes_128_gcm_decrypter_test.cc",
579    "src/quiche/quic/core/crypto/aes_128_gcm_encrypter_test.cc",
580    "src/quiche/quic/core/crypto/aes_256_gcm_decrypter_test.cc",
581    "src/quiche/quic/core/crypto/aes_256_gcm_encrypter_test.cc",
582    "src/quiche/quic/core/crypto/cert_compressor_test.cc",
583    "src/quiche/quic/core/crypto/certificate_util_test.cc",
584    "src/quiche/quic/core/crypto/certificate_view_test.cc",
585    "src/quiche/quic/core/crypto/chacha20_poly1305_decrypter_test.cc",
586    "src/quiche/quic/core/crypto/chacha20_poly1305_encrypter_test.cc",
587    "src/quiche/quic/core/crypto/chacha20_poly1305_tls_decrypter_test.cc",
588    "src/quiche/quic/core/crypto/chacha20_poly1305_tls_encrypter_test.cc",
589    "src/quiche/quic/core/crypto/channel_id_test.cc",
590    "src/quiche/quic/core/crypto/client_proof_source_test.cc",
591    "src/quiche/quic/core/crypto/crypto_framer_test.cc",
592    "src/quiche/quic/core/crypto/crypto_handshake_message_test.cc",
593    "src/quiche/quic/core/crypto/crypto_secret_boxer_test.cc",
594    "src/quiche/quic/core/crypto/crypto_server_test.cc",
595    "src/quiche/quic/core/crypto/crypto_utils_test.cc",
596    "src/quiche/quic/core/crypto/curve25519_key_exchange_test.cc",
597    "src/quiche/quic/core/crypto/null_decrypter_test.cc",
598    "src/quiche/quic/core/crypto/null_encrypter_test.cc",
599    "src/quiche/quic/core/crypto/p256_key_exchange_test.cc",
600    "src/quiche/quic/core/crypto/proof_source_x509_test.cc",
601    "src/quiche/quic/core/crypto/quic_client_session_cache_test.cc",
602    "src/quiche/quic/core/crypto/quic_compressed_certs_cache_test.cc",
603    "src/quiche/quic/core/crypto/quic_crypto_client_config_test.cc",
604    "src/quiche/quic/core/crypto/quic_crypto_server_config_test.cc",
605    "src/quiche/quic/core/crypto/quic_hkdf_test.cc",
606    "src/quiche/quic/core/crypto/transport_parameters_test.cc",
607    "src/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier_test.cc",
608    "src/quiche/quic/core/deterministic_connection_id_generator_test.cc",
609    "src/quiche/quic/core/frames/quic_frames_test.cc",
610    "src/quiche/quic/core/http/http_decoder_test.cc",
611    "src/quiche/quic/core/http/http_encoder_test.cc",
612    "src/quiche/quic/core/http/http_frames_test.cc",
613    "src/quiche/quic/core/http/quic_header_list_test.cc",
614    "src/quiche/quic/core/http/quic_headers_stream_test.cc",
615    "src/quiche/quic/core/http/quic_receive_control_stream_test.cc",
616    "src/quiche/quic/core/http/quic_send_control_stream_test.cc",
617    "src/quiche/quic/core/http/quic_server_session_base_test.cc",
618    "src/quiche/quic/core/http/quic_spdy_session_test.cc",
619    "src/quiche/quic/core/http/quic_spdy_stream_body_manager_test.cc",
620    "src/quiche/quic/core/http/quic_spdy_stream_test.cc",
621    "src/quiche/quic/core/http/spdy_utils_test.cc",
622    "src/quiche/quic/core/http/web_transport_http3_test.cc",
623    "src/quiche/quic/core/internet_checksum_test.cc",
624    "src/quiche/quic/core/legacy_quic_stream_id_manager_test.cc",
625    "src/quiche/quic/core/packet_number_indexed_queue_test.cc",
626    "src/quiche/quic/core/qpack/qpack_blocking_manager_test.cc",
627    "src/quiche/quic/core/qpack/qpack_decoded_headers_accumulator_test.cc",
628    "src/quiche/quic/core/qpack/qpack_decoder_stream_receiver_test.cc",
629    "src/quiche/quic/core/qpack/qpack_decoder_stream_sender_test.cc",
630    "src/quiche/quic/core/qpack/qpack_decoder_test.cc",
631    "src/quiche/quic/core/qpack/qpack_encoder_stream_receiver_test.cc",
632    "src/quiche/quic/core/qpack/qpack_encoder_stream_sender_test.cc",
633    "src/quiche/quic/core/qpack/qpack_encoder_test.cc",
634    "src/quiche/quic/core/qpack/qpack_header_table_test.cc",
635    "src/quiche/quic/core/qpack/qpack_index_conversions_test.cc",
636    "src/quiche/quic/core/qpack/qpack_instruction_decoder_test.cc",
637    "src/quiche/quic/core/qpack/qpack_instruction_encoder_test.cc",
638    "src/quiche/quic/core/qpack/qpack_receive_stream_test.cc",
639    "src/quiche/quic/core/qpack/qpack_required_insert_count_test.cc",
640    "src/quiche/quic/core/qpack/qpack_round_trip_test.cc",
641    "src/quiche/quic/core/qpack/qpack_send_stream_test.cc",
642    "src/quiche/quic/core/qpack/qpack_static_table_test.cc",
643    "src/quiche/quic/core/qpack/value_splitting_header_list_test.cc",
644    "src/quiche/quic/core/quic_alarm_test.cc",
645    "src/quiche/quic/core/quic_arena_scoped_ptr_test.cc",
646    "src/quiche/quic/core/quic_bandwidth_test.cc",
647    "src/quiche/quic/core/quic_buffered_packet_store_test.cc",
648    "src/quiche/quic/core/quic_chaos_protector_test.cc",
649    "src/quiche/quic/core/quic_coalesced_packet_test.cc",
650    "src/quiche/quic/core/quic_config_test.cc",
651    "src/quiche/quic/core/quic_connection_context_test.cc",
652    "src/quiche/quic/core/quic_connection_id_manager_test.cc",
653    "src/quiche/quic/core/quic_connection_id_test.cc",
654    "src/quiche/quic/core/quic_connection_test.cc",
655    "src/quiche/quic/core/quic_control_frame_manager_test.cc",
656    "src/quiche/quic/core/quic_crypto_client_handshaker_test.cc",
657    "src/quiche/quic/core/quic_crypto_client_stream_test.cc",
658    "src/quiche/quic/core/quic_crypto_server_stream_test.cc",
659    "src/quiche/quic/core/quic_crypto_stream_test.cc",
660    "src/quiche/quic/core/quic_data_writer_test.cc",
661    "src/quiche/quic/core/quic_datagram_queue_test.cc",
662    "src/quiche/quic/core/quic_dispatcher_test.cc",
663    "src/quiche/quic/core/quic_error_codes_test.cc",
664    "src/quiche/quic/core/quic_flow_controller_test.cc",
665    "src/quiche/quic/core/quic_framer_test.cc",
666    "src/quiche/quic/core/quic_generic_session_test.cc",
667    "src/quiche/quic/core/quic_idle_network_detector_test.cc",
668    "src/quiche/quic/core/quic_interval_deque_test.cc",
669    "src/quiche/quic/core/quic_interval_set_test.cc",
670    "src/quiche/quic/core/quic_interval_test.cc",
671    "src/quiche/quic/core/quic_lru_cache_test.cc",
672    "src/quiche/quic/core/quic_network_blackhole_detector_test.cc",
673    "src/quiche/quic/core/quic_one_block_arena_test.cc",
674    "src/quiche/quic/core/quic_packet_creator_test.cc",
675    "src/quiche/quic/core/quic_packet_number_test.cc",
676    "src/quiche/quic/core/quic_packets_test.cc",
677    "src/quiche/quic/core/quic_path_validator_test.cc",
678    "src/quiche/quic/core/quic_ping_manager_test.cc",
679    "src/quiche/quic/core/quic_received_packet_manager_test.cc",
680    "src/quiche/quic/core/quic_sent_packet_manager_test.cc",
681    "src/quiche/quic/core/quic_server_id_test.cc",
682    "src/quiche/quic/core/quic_session_test.cc",
683    "src/quiche/quic/core/quic_socket_address_coder_test.cc",
684    "src/quiche/quic/core/quic_stream_id_manager_test.cc",
685    "src/quiche/quic/core/quic_stream_priority_test.cc",
686    "src/quiche/quic/core/quic_stream_send_buffer_test.cc",
687    "src/quiche/quic/core/quic_stream_sequencer_buffer_test.cc",
688    "src/quiche/quic/core/quic_stream_sequencer_test.cc",
689    "src/quiche/quic/core/quic_stream_test.cc",
690    "src/quiche/quic/core/quic_sustained_bandwidth_recorder_test.cc",
691    "src/quiche/quic/core/quic_tag_test.cc",
692    "src/quiche/quic/core/quic_time_accumulator_test.cc",
693    "src/quiche/quic/core/quic_time_test.cc",
694    "src/quiche/quic/core/quic_time_wait_list_manager_test.cc",
695    "src/quiche/quic/core/quic_trace_visitor_test.cc",
696    "src/quiche/quic/core/quic_unacked_packet_map_test.cc",
697    "src/quiche/quic/core/quic_utils_test.cc",
698    "src/quiche/quic/core/quic_version_manager_test.cc",
699    "src/quiche/quic/core/quic_versions_test.cc",
700    "src/quiche/quic/core/quic_write_blocked_list_test.cc",
701    "src/quiche/quic/core/tls_chlo_extractor_test.cc",
702    "src/quiche/quic/core/tls_client_handshaker_test.cc",
703    "src/quiche/quic/core/tls_server_handshaker_test.cc",
704    "src/quiche/quic/core/uber_quic_stream_id_manager_test.cc",
705    "src/quiche/quic/core/uber_received_packet_manager_test.cc",
706    "src/quiche/quic/platform/api/quic_socket_address_test.cc",
707    "src/quiche/quic/test_tools/crypto_test_utils_test.cc",
708    "src/quiche/quic/test_tools/quic_test_utils_test.cc",
709    "src/quiche/quic/test_tools/simple_session_notifier_test.cc",
710    "src/quiche/quic/test_tools/simulator/quic_endpoint_test.cc",
711    "src/quiche/quic/test_tools/simulator/simulator_test.cc",
712    "src/quiche/quic/test_tools/test_ip_packets_test.cc",
713    "src/quiche/quic/tools/connect_tunnel_test.cc",
714    "src/quiche/quic/tools/connect_udp_tunnel_test.cc",
715    "src/quiche/quic/tools/quic_memory_cache_backend_test.cc",
716    "src/quiche/quic/tools/quic_tcp_like_trace_converter_test.cc",
717    "src/quiche/quic/tools/simple_ticket_crypter_test.cc",
718    "src/quiche/spdy/core/array_output_buffer_test.cc",
719    "src/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc",
720    "src/quiche/spdy/core/hpack/hpack_encoder_test.cc",
721    "src/quiche/spdy/core/hpack/hpack_entry_test.cc",
722    "src/quiche/spdy/core/hpack/hpack_header_table_test.cc",
723    "src/quiche/spdy/core/hpack/hpack_output_stream_test.cc",
724    "src/quiche/spdy/core/hpack/hpack_round_trip_test.cc",
725    "src/quiche/spdy/core/hpack/hpack_static_table_test.cc",
726    "src/quiche/spdy/core/spdy_alt_svc_wire_format_test.cc",
727    "src/quiche/spdy/core/spdy_frame_builder_test.cc",
728    "src/quiche/spdy/core/spdy_framer_test.cc",
729    "src/quiche/spdy/core/spdy_protocol_test.cc",
730    "src/quiche/web_transport/encapsulated/encapsulated_web_transport_test.cc",
731    "src/quiche/web_transport/web_transport_headers_test.cc",
732  ]
733
734  data = [ "src/quiche/common/platform/api/testdir/" ]
735
736  configs += [ ":quiche_internal_config" ]
737  public_configs = [ ":quiche_config" ]
738
739  deps = [
740    ":blind_sign_auth",
741    ":blind_sign_auth_test_support",
742    "//net",
743    "//net:quic_test_tools",
744    "//net:simple_quic_tools",
745    "//net:spdy_test_tools",
746    "//testing/gmock",
747    "//testing/gtest",
748  ]
749  if (is_ios) {
750    deps += [ ":test_data" ]
751  }
752  public_deps = []
753
754  if (build_epoll_based_tools) {
755    sources += [
756      "overrides/quiche_platform_impl/quiche_command_line_flags_test.cc",
757      "src/quiche/quic/core/chlo_extractor_test.cc",
758      "src/quiche/quic/core/http/end_to_end_test.cc",
759      "src/quiche/quic/core/http/quic_spdy_client_session_test.cc",
760      "src/quiche/quic/core/http/quic_spdy_client_stream_test.cc",
761      "src/quiche/quic/core/http/quic_spdy_server_stream_base_test.cc",
762      "src/quiche/quic/core/io/event_loop_connecting_client_socket_test.cc",
763      "src/quiche/quic/core/io/quic_all_event_loops_test.cc",
764      "src/quiche/quic/core/io/quic_poll_event_loop_test.cc",
765      "src/quiche/quic/core/io/socket_test.cc",
766      "src/quiche/quic/tools/quic_default_client_test.cc",
767      "src/quiche/quic/tools/quic_server_test.cc",
768      "src/quiche/quic/tools/quic_simple_server_session_test.cc",
769      "src/quiche/quic/tools/quic_simple_server_stream_test.cc",
770      "src/quiche/quic/tools/quic_url_test.cc",
771    ]
772    public_deps += [
773      ":epoll_test_support",
774      ":epoll_tool_support",
775    ]
776  }
777}
778
779fuzzer_test("net_quic_framer_fuzzer") {
780  sources = [ "src/quiche/quic/test_tools/fuzzing/quic_framer_fuzzer.cc" ]
781
782  deps = [
783    "//net",
784    "//net:net_fuzzer_test_support",
785    "//net:quic_test_tools",
786    "//net:test_support",
787    "//net/data/ssl/certificates:generate_fuzzer_cert_includes",
788  ]
789}
790
791fuzzer_test("net_quic_framer_process_data_packet_fuzzer") {
792  sources = [ "src/quiche/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc" ]
793
794  deps = [
795    "//net",
796    "//net:net_fuzzer_test_support",
797    "//net:quic_test_tools",
798    "//net:test_support",
799    "//net/data/ssl/certificates:generate_fuzzer_cert_includes",
800  ]
801}
802
803fuzzer_test("net_qpack_decoder_fuzzer") {
804  sources = [ "src/quiche/quic/core/qpack/fuzzer/qpack_decoder_fuzzer.cc" ]
805  deps = [
806    "//base",
807    "//net",
808    "//net:net_fuzzer_test_support",
809    "//net:quic_test_tools",
810    "//net:test_support",
811  ]
812}
813
814fuzzer_test("net_qpack_encoder_stream_receiver_fuzzer") {
815  sources = [
816    "src/quiche/quic/core/qpack/fuzzer/qpack_encoder_stream_receiver_fuzzer.cc",
817  ]
818  deps = [
819    "//base",
820    "//net",
821    "//net:net_fuzzer_test_support",
822  ]
823}
824
825fuzzer_test("net_qpack_encoder_stream_sender_fuzzer") {
826  sources = [
827    "src/quiche/quic/core/qpack/fuzzer/qpack_encoder_stream_sender_fuzzer.cc",
828  ]
829  deps = [
830    "//base",
831    "//net",
832    "//net:net_fuzzer_test_support",
833    "//net:quic_test_tools",
834    "//net:test_support",
835  ]
836}
837
838fuzzer_test("net_qpack_round_trip_fuzzer") {
839  sources = [ "src/quiche/quic/core/qpack/fuzzer/qpack_round_trip_fuzzer.cc" ]
840  deps = [
841    "//base",
842    "//net",
843    "//net:net_fuzzer_test_support",
844    "//net:quic_test_tools",
845    "//net:test_support",
846  ]
847}
848
849component("blind_sign_auth") {
850  sources = [
851    "src/quiche/blind_sign_auth/blind_sign_auth.cc",
852    "src/quiche/blind_sign_auth/blind_sign_auth.h",
853    "src/quiche/blind_sign_auth/blind_sign_auth_interface.h",
854    "src/quiche/blind_sign_auth/blind_sign_http_response.h",
855    "src/quiche/blind_sign_auth/blind_sign_message_interface.h",
856    "src/quiche/blind_sign_auth/cached_blind_sign_auth.cc",
857    "src/quiche/blind_sign_auth/cached_blind_sign_auth.h",
858  ]
859  configs += [ ":quiche_internal_config" ]
860  public_configs = [ ":quiche_config" ]
861
862  deps = [
863    ":quiche",
864    "//base",
865    "//third_party/abseil-cpp:absl",
866    "//third_party/anonymous_tokens:rsa_bssa_public_metadata_client",
867    "//third_party/boringssl",
868    "//url",
869  ]
870
871  public_deps = [
872    ":blind_sign_auth_proto",
873    "//third_party/anonymous_tokens:anonymous_tokens_rsa_bssa_client",
874    "//third_party/anonymous_tokens:crypto_utils",
875    "//third_party/anonymous_tokens:proto_utils",
876    "//third_party/anonymous_tokens:tokens_encodings",
877  ]
878
879  defines = [ "IS_QUICHE_IMPL" ]
880}
881
882proto_library("blind_sign_auth_proto") {
883  visibility = [
884    ":blind_sign_auth",
885    ":blind_sign_auth_test_support",
886    ":quiche",
887    ":quiche_tests",
888  ]
889
890  sources = protobuf_blind_sign_auth
891  cc_generator_options = "lite=true,dllexport_decl=COMPONENT_EXPORT(QUICHE):"
892  cc_include = "base/component_export.h"
893  component_build_force_source_set = true
894
895  proto_in_dir = "src"
896
897  deps = [ "//base" ]
898
899  proto_deps = [ "//third_party/anonymous_tokens:anonymous_tokens_cc_proto" ]
900
901  proto_data_sources = [ "//third_party/anonymous_tokens/src/anonymous_tokens/proto/anonymous_tokens.proto" ]
902
903  import_dirs = [ "//third_party/anonymous_tokens/src/" ]
904
905  defines = [ "IS_QUICHE_IMPL" ]
906
907  extra_configs = [ "//build/config/compiler:wexit_time_destructors" ]
908}
909
910source_set("blind_sign_auth_test_support") {
911  visibility = [ ":quiche_tests" ]
912  testonly = true
913  sources = [
914    "src/quiche/blind_sign_auth/test_tools/mock_blind_sign_auth_interface.h",
915    "src/quiche/blind_sign_auth/test_tools/mock_blind_sign_http_interface.h",
916  ]
917  configs += [ ":quiche_internal_config" ]
918  public_configs = [ ":quiche_config" ]
919
920  deps = [
921    ":blind_sign_auth",
922    ":quiche",
923    ":quiche_test_support",
924    ":quiche_tool_support",
925  ]
926  public_deps =
927      [ "//third_party/anonymous_tokens:anonymous_tokens_test_support" ]
928}
929
930if (is_android) {
931  import("//build/config/android/rules.gni")
932
933  proto_java_library("blind_sign_auth_proto_java") {
934    visibility = [
935      "//components/ip_protection/*",
936      "//net/third_party/quiche/*",
937    ]
938
939    proto_path = "src/"
940
941    sources = [
942      "src/quiche/blind_sign_auth/proto/any.proto",
943      "src/quiche/blind_sign_auth/proto/attestation.proto",
944      "src/quiche/blind_sign_auth/proto/auth_and_sign.proto",
945      "src/quiche/blind_sign_auth/proto/get_initial_data.proto",
946      "src/quiche/blind_sign_auth/proto/key_services.proto",
947      "src/quiche/blind_sign_auth/proto/proxy_layer.proto",
948      "src/quiche/blind_sign_auth/proto/public_metadata.proto",
949    ]
950
951    deps = [ "//third_party/anonymous_tokens:anonymous_tokens_java_proto" ]
952
953    import_dirs = [ "//third_party/anonymous_tokens/src/" ]
954  }
955}
956