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