summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/BUILD.gn
blob: d415295d6f2526da4ea45cfc81b77786d61f993d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
# Copyright 2014 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.

import("//build/config/chromecast_build.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//third_party/blink/renderer/bindings/bindings.gni")
import("//third_party/blink/renderer/bindings/modules/v8/generated.gni")
import("//third_party/blink/renderer/bindings/modules/v8/v8.gni")
import("//third_party/blink/renderer/build/scripts/scripts.gni")
import("//third_party/blink/renderer/modules/modules.gni")
import("//third_party/blink/renderer/modules/modules_idl_files.gni")
import("//third_party/webrtc/webrtc.gni")

if (is_android) {
  import("//build/config/android/rules.gni")
}

visibility = [ "//third_party/blink/renderer/*" ]

config("modules_implementation") {
  defines = [ "BLINK_MODULES_IMPLEMENTATION=1" ]
}

make_names("indexed_db_names") {
  in_files = [ "indexeddb/indexed_db_names.json5" ]
  output_dir = blink_modules_output_dir
  deps = []  # Don't use default deps (otherwise it will be circular).
}

make_names("media_capabilities_names") {
  in_files = [ "media_capabilities/media_capabilities_names.json5" ]
  output_dir = blink_modules_output_dir
  deps = []  # Don't use default deps (otherwise it will be circular).
}

jumbo_component("modules") {
  output_name = "blink_modules"

  visibility = []  # Allow re-assignment of list.
  visibility = [ "//third_party/blink/*" ]

  sources = [
    "event_modules.h",
    "event_modules_factory.h",
    "event_target_modules.h",
    "modules_export.h",
    "modules_initializer.cc",
    "modules_initializer.h",
  ]

  # Compile sources generated by make_names script.
  sources += get_target_outputs(":indexed_db_names")
  sources += get_target_outputs(":media_capabilities_names")

  sources += bindings_modules_v8_files

  if (!use_blink_v8_binding_new_idl_interface) {
    sources += rebase_path(
            [ bindings_generated_v8_context_snapshot_external_references_file ],
            ".",
            "//")
  }

  configs += [
    ":modules_implementation",

    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    "//build/config/compiler:no_size_t_to_int_warning",
    "//third_party/blink/renderer:config",
    "//third_party/blink/renderer:non_test_config",
    "//third_party/blink/renderer:inside_blink",
    "//third_party/blink/renderer/core:blink_core_pch",
    "//tools/v8_context_snapshot:use_v8_context_snapshot",
  ]

  sub_modules = [
    "//third_party/blink/renderer/bindings/modules/v8",
    "//third_party/blink/renderer/modules/accessibility",
    "//third_party/blink/renderer/modules/ad_auction",
    "//third_party/blink/renderer/modules/animationworklet",
    "//third_party/blink/renderer/modules/app_banner",
    "//third_party/blink/renderer/modules/audio_output_devices",
    "//third_party/blink/renderer/modules/background_fetch",
    "//third_party/blink/renderer/modules/background_sync",
    "//third_party/blink/renderer/modules/badging",
    "//third_party/blink/renderer/modules/managed_device",
    "//third_party/blink/renderer/modules/battery",
    "//third_party/blink/renderer/modules/beacon",
    "//third_party/blink/renderer/modules/bluetooth",
    "//third_party/blink/renderer/modules/broadcastchannel",
    "//third_party/blink/renderer/modules/buckets",
    "//third_party/blink/renderer/modules/breakout_box",
    "//third_party/blink/renderer/modules/cache_storage",
    "//third_party/blink/renderer/modules/canvas",
    "//third_party/blink/renderer/modules/clipboard",
    "//third_party/blink/renderer/modules/compute_pressure",
    "//third_party/blink/renderer/modules/contacts_picker",
    "//third_party/blink/renderer/modules/content_index",
    "//third_party/blink/renderer/modules/cookie_store",
    "//third_party/blink/renderer/modules/credentialmanager",
    "//third_party/blink/renderer/modules/crypto",
    "//third_party/blink/renderer/modules/csspaint",
    "//third_party/blink/renderer/modules/compression",
    "//third_party/blink/renderer/modules/delegated_ink",
    "//third_party/blink/renderer/modules/device_orientation",
    "//third_party/blink/renderer/modules/document_metadata",
    "//third_party/blink/renderer/modules/donottrack",
    "//third_party/blink/renderer/modules/encoding",
    "//third_party/blink/renderer/modules/encryptedmedia",
    "//third_party/blink/renderer/modules/eventsource",
    "//third_party/blink/renderer/modules/exported",
    "//third_party/blink/renderer/modules/eyedropper",
    "//third_party/blink/renderer/modules/filesystem",
    "//third_party/blink/renderer/modules/file_system_access",
    "//third_party/blink/renderer/modules/font_access",
    "//third_party/blink/renderer/modules/gamepad",
    "//third_party/blink/renderer/modules/geolocation",
    "//third_party/blink/renderer/modules/handwriting",
    "//third_party/blink/renderer/modules/hid",
    "//third_party/blink/renderer/modules/idle",
    "//third_party/blink/renderer/modules/imagecapture",
    "//third_party/blink/renderer/modules/image_downloader",
    "//third_party/blink/renderer/modules/indexeddb",
    "//third_party/blink/renderer/modules/installation",
    "//third_party/blink/renderer/modules/installedapp",
    "//third_party/blink/renderer/modules/keyboard",
    "//third_party/blink/renderer/modules/launch",
    "//third_party/blink/renderer/modules/locks",
    "//third_party/blink/renderer/modules/lock_screen",
    "//third_party/blink/renderer/modules/manifest",
    "//third_party/blink/renderer/modules/media_capabilities",
    "//third_party/blink/renderer/modules/media_controls",
    "//third_party/blink/renderer/modules/mediacapturefromelement",
    "//third_party/blink/renderer/modules/mediarecorder",
    "//third_party/blink/renderer/modules/mediasession",
    "//third_party/blink/renderer/modules/mediasource",
    "//third_party/blink/renderer/modules/mediastream",
    "//third_party/blink/renderer/modules/media",
    "//third_party/blink/renderer/modules/modalclosewatcher",
    "//third_party/blink/renderer/modules/native_io",
    "//third_party/blink/renderer/modules/navigatorcontentutils",
    "//third_party/blink/renderer/modules/netinfo",
    "//third_party/blink/renderer/modules/nfc",
    "//third_party/blink/renderer/modules/notifications",
    "//third_party/blink/renderer/modules/payments",
    "//third_party/blink/renderer/modules/payments/goods",
    "//third_party/blink/renderer/modules/peerconnection",
    "//third_party/blink/renderer/modules/permissions",
    "//third_party/blink/renderer/modules/picture_in_picture",
    "//third_party/blink/renderer/modules/plugins",
    "//third_party/blink/renderer/modules/presentation",
    "//third_party/blink/renderer/modules/push_messaging",
    "//third_party/blink/renderer/modules/quota",
    "//third_party/blink/renderer/modules/remoteplayback",
    "//third_party/blink/renderer/modules/sanitizer_api",
    "//third_party/blink/renderer/modules/scheduler",
    "//third_party/blink/renderer/modules/screen_enumeration",
    "//third_party/blink/renderer/modules/screen_orientation",
    "//third_party/blink/renderer/modules/sensor",
    "//third_party/blink/renderer/modules/service_worker",
    "//third_party/blink/renderer/modules/shapedetection",
    "//third_party/blink/renderer/modules/speech",
    "//third_party/blink/renderer/modules/srcobject",
    "//third_party/blink/renderer/modules/storage",
    "//third_party/blink/renderer/modules/url_pattern",
    "//third_party/blink/renderer/modules/vibration",
    "//third_party/blink/renderer/modules/video_rvfc",
    "//third_party/blink/renderer/modules/virtualkeyboard",
    "//third_party/blink/renderer/modules/wake_lock",
    "//third_party/blink/renderer/modules/webaudio",
    "//third_party/blink/renderer/modules/webcodecs",
    "//third_party/blink/renderer/modules/webdatabase",
    "//third_party/blink/renderer/modules/webgl",
    "//third_party/blink/renderer/modules/webgpu",
    "//third_party/blink/renderer/modules/webid",
    "//third_party/blink/renderer/modules/webmidi",
    "//third_party/blink/renderer/modules/webrtc",
    "//third_party/blink/renderer/modules/webshare",
    "//third_party/blink/renderer/modules/websockets",
    "//third_party/blink/renderer/modules/webtransport",
    "//third_party/blink/renderer/modules/webusb",
    "//third_party/blink/renderer/modules/worklet",
    "//third_party/blink/renderer/modules/xr",
  ]

  if (is_android) {
    sub_modules += [ "//third_party/blink/renderer/modules/remote_objects" ]
  } else {
    sub_modules += [
      "//third_party/blink/renderer/modules/direct_sockets",
      "//third_party/blink/renderer/modules/serial",
    ]
  }

  deps = [
    ":indexed_db_names",
    ":make_modules_generated",
    ":media_capabilities_names",
    "//jingle:webrtc_glue",
    "//net:net",
    "//third_party/blink/renderer/bindings/modules:generated",
    "//third_party/blink/renderer/bindings/modules/v8:bindings_modules_impl",
    "//third_party/blink/renderer/bindings/modules/v8:bindings_modules_origin_trial_features",
    "//third_party/blink/renderer/bindings/modules/v8:generated",
    "//third_party/blink/renderer/core",
    "//third_party/icu",
    "//third_party/webrtc_overrides:webrtc_component",
    "//third_party/zlib",
  ]

  public_deps = sub_modules
  allow_circular_includes_from = sub_modules

  if (is_win) {
    cflags =
        [ "/wd4334" ]  # Result of 32-bit shift implicitly converted to 64 bits.
  }

  configs -= [ "//build/config/compiler:default_symbols" ]
  configs += blink_symbols_config
  configs -= [ "//build/config/compiler:default_optimization" ]
  configs += blink_optimization_config
}

jumbo_source_set("modules_testing") {
  testonly = true

  sources = [
    "accessibility/testing/internals_accessibility.cc",
    "accessibility/testing/internals_accessibility.h",
    "canvas/canvas2d/testing/internals_canvas_rendering_context_2d.cc",
    "canvas/canvas2d/testing/internals_canvas_rendering_context_2d.h",
    "mediastream/testing/internals_media_stream.cc",
    "mediastream/testing/internals_media_stream.h",
    "netinfo/testing/internals_net_info.cc",
    "netinfo/testing/internals_net_info.h",
    "peerconnection/adapters/test/mock_ice_transport_adapter.h",
    "peerconnection/adapters/test/mock_ice_transport_adapter_cross_thread_factory.h",
    "peerconnection/testing/fake_resource_listener.cc",
    "peerconnection/testing/fake_resource_listener.h",
    "peerconnection/testing/internals_rtc_certificate.cc",
    "peerconnection/testing/internals_rtc_certificate.h",
    "peerconnection/testing/internals_rtc_peer_connection.cc",
    "peerconnection/testing/internals_rtc_peer_connection.h",
    "peerconnection/testing/mock_peer_connection_interface.h",
    "peerconnection/testing/mock_rtp_receiver.h",
    "peerconnection/testing/mock_rtp_sender.h",
    "peerconnection/testing/mock_transformable_video_frame.h",
    "permissions/testing/internals_permission.cc",
    "permissions/testing/internals_permission.h",
    "service_worker/testing/internals_service_worker.cc",
    "service_worker/testing/internals_service_worker.h",
    "speech/testing/internals_speech_synthesis.cc",
    "speech/testing/internals_speech_synthesis.h",
    "speech/testing/mojom_speech_synthesis_mock.cc",
    "speech/testing/mojom_speech_synthesis_mock.h",
    "vibration/testing/internals_vibration.cc",
    "vibration/testing/internals_vibration.h",
    "webaudio/testing/internals_web_audio.cc",
    "webaudio/testing/internals_web_audio.h",
  ]

  configs += [
    "//third_party/blink/renderer:config",
    "//third_party/blink/renderer:inside_blink",
    "//third_party/blink/renderer/core:blink_core_pch",
  ]

  public_deps = [
    "//mojo/public/cpp/bindings",
    "//testing/gmock:gmock",
  ]
  deps = [
    "//third_party/blink/renderer/bindings/modules/v8:testing",
    "//third_party/blink/renderer/core",
    "//third_party/blink/renderer/core:testing",
    "//third_party/blink/renderer/modules",
  ]
}

group("make_modules_generated") {
  public_deps = [
    ":indexed_db_names",
    ":media_capabilities_names",
    "//third_party/blink/renderer/bindings/modules:bindings_modules_generated",
    "//third_party/blink/renderer/bindings/modules/v8:generated",
    "//third_party/blink/renderer/core:core_event_interfaces",
    "//third_party/blink/renderer/modules/mediarecorder:buildflags",
  ]
}

jumbo_source_set("unit_tests") {
  testonly = true

  sources = [
    "accessibility/accessibility_object_model_test.cc",
    "accessibility/ax_inline_text_box_test.cc",
    "accessibility/ax_layout_object_test.cc",
    "accessibility/ax_node_object_test.cc",
    "accessibility/ax_object_cache_test.cc",
    "accessibility/ax_object_test.cc",
    "accessibility/ax_position_test.cc",
    "accessibility/ax_range_test.cc",
    "accessibility/ax_selection_test.cc",
    "accessibility/testing/accessibility_selection_test.cc",
    "accessibility/testing/accessibility_selection_test.h",
    "accessibility/testing/accessibility_test.cc",
    "accessibility/testing/accessibility_test.h",
    "animationworklet/animation_worklet_global_scope_test.cc",
    "animationworklet/animation_worklet_proxy_client_test.cc",
    "animationworklet/worklet_animation_test.cc",
    "background_fetch/background_fetch_icon_loader_test.cc",
    "background_fetch/background_fetch_manager_test.cc",
    "cache_storage/cache_test.cc",
    "canvas/canvas2d/canvas_rendering_context_2d_api_test.cc",
    "canvas/canvas2d/canvas_rendering_context_2d_test.cc",
    "canvas/htmlcanvas/html_canvas_element_module_test.cc",
    "canvas/offscreencanvas/offscreen_canvas_rendering_api_ukm_metrics_test.cc",
    "canvas/offscreencanvas/offscreen_canvas_test.cc",
    "content_index/content_description_type_converter_test.cc",
    "credentialmanager/credentials_container_test.cc",
    "credentialmanager/password_credential_test.cc",
    "csspaint/background_color_paint_worklet_test.cc",
    "csspaint/document_paint_definition_test.cc",
    "csspaint/paint_rendering_context_2d_test.cc",
    "csspaint/paint_worklet_global_scope_test.cc",
    "csspaint/paint_worklet_proxy_client_test.cc",
    "csspaint/paint_worklet_test.cc",
    "delegated_ink/delegated_ink_trail_presenter_unittest.cc",
    "device_orientation/device_motion_event_pump_unittest.cc",
    "device_orientation/device_orientation_event_pump_unittest.cc",
    "document_metadata/document_metadata_extractor_test.cc",
    "eventsource/event_source_parser_test.cc",
    "filesystem/dom_file_system_base_test.cc",
    "filesystem/file_writer_test.cc",
    "handwriting/handwriting_type_converters_unittest.cc",
    "installedapp/installed_app_controller_test.cc",
    "manifest/image_resource_type_converters_test.cc",
    "manifest/manifest_manager_unittest.cc",
    "manifest/manifest_parser_unittest.cc",
    "manifest/manifest_type_converters_unittest.cc",
    "media/audio/audio_renderer_mixer_manager_test.cc",
    "media/audio/audio_renderer_sink_cache_test.cc",
    "media/audio/mojo_audio_input_ipc_test.cc",
    "media/audio/mojo_audio_output_ipc_test.cc",
    "media/audio/web_audio_output_ipc_factory_test.cc",
    "media/webmediaplayer_util_unittest.cc",
    "media_capabilities/media_capabilities_test.cc",
    "media_controls/elements/media_control_animated_arrow_container_element_test.cc",
    "media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc",
    "media_controls/elements/media_control_input_element_test.cc",
    "media_controls/elements/media_control_loading_panel_element_test.cc",
    "media_controls/elements/media_control_panel_element_test.cc",
    "media_controls/elements/media_control_scrubbing_message_element_test.cc",
    "media_controls/elements/media_control_timeline_element_test.cc",
    "media_controls/elements/media_control_toggle_closed_captions_button_element_test.cc",
    "media_controls/media_controls_display_cutout_delegate_test.cc",
    "media_controls/media_controls_impl_test.cc",
    "media_controls/media_controls_orientation_lock_delegate_test.cc",
    "media_controls/media_controls_rotate_to_fullscreen_delegate_test.cc",
    "mediacapturefromelement/canvas_capture_handler_unittest.cc",
    "mediacapturefromelement/html_audio_element_capturer_source_unittest.cc",
    "mediacapturefromelement/html_video_element_capturer_source_unittest.cc",
    "mediarecorder/audio_track_recorder_unittest.cc",
    "mediarecorder/fake_encoded_video_frame.h",
    "mediarecorder/media_recorder_handler_unittest.cc",
    "mediarecorder/media_recorder_unittest.cc",
    "mediarecorder/track_recorder_unittest.cc",
    "mediarecorder/video_track_recorder_unittest.cc",
    "mediasession/media_session_test.cc",
    "mediastream/low_latency_video_renderer_algorithm_unittest.cc",
    "mediastream/media_constraints_test.cc",
    "mediastream/media_devices_test.cc",
    "mediastream/media_stream_audio_processor_test.cc",
    "mediastream/media_stream_constraints_util_audio_test.cc",
    "mediastream/media_stream_constraints_util_sets_test.cc",
    "mediastream/media_stream_constraints_util_test.cc",
    "mediastream/media_stream_constraints_util_video_content_test.cc",
    "mediastream/media_stream_constraints_util_video_device_test.cc",
    "mediastream/media_stream_device_observer_test.cc",
    "mediastream/media_stream_track_test.cc",
    "mediastream/media_stream_video_capturer_source_test.cc",
    "mediastream/media_stream_video_renderer_sink_test.cc",
    "mediastream/media_stream_video_source_test.cc",
    "mediastream/media_stream_video_track_test.cc",
    "mediastream/mock_mojo_media_stream_dispatcher_host.cc",
    "mediastream/mock_mojo_media_stream_dispatcher_host.h",
    "mediastream/processed_local_audio_source_test.cc",
    "mediastream/user_media_client_test.cc",
    "mediastream/video_track_adapter_unittest.cc",
    "mediastream/webaudio_media_stream_audio_sink_test.cc",
    "mediastream/webmediaplayer_ms_test.cc",
    "nfc/nfc_proxy_test.cc",
    "notifications/notification_data_test.cc",
    "notifications/notification_resources_loader_test.cc",
    "payments/abort_test.cc",
    "payments/can_make_payment_test.cc",
    "payments/complete_test.cc",
    "payments/goods/digital_goods_type_converters_unittest.cc",
    "payments/merchant_validation_event_test.cc",
    "payments/on_payment_response_test.cc",
    "payments/payment_address_test.cc",
    "payments/payment_event_data_conversion_test.cc",
    "payments/payment_request_details_test.cc",
    "payments/payment_request_for_invalid_origin_or_ssl_test.cc",
    "payments/payment_request_optional_total_test.cc",
    "payments/payment_request_test.cc",
    "payments/payment_request_update_event_test.cc",
    "payments/payment_response_test.cc",
    "payments/payment_test_helper.cc",
    "payments/payment_test_helper.h",
    "payments/payments_validators_test.cc",
    "peerconnection/byte_buffer_queue_test.cc",
    "peerconnection/call_setup_state_tracker_unittest.cc",
    "peerconnection/media_stream_remote_video_source_test.cc",
    "peerconnection/media_stream_track_metrics_test.cc",
    "peerconnection/media_stream_video_webrtc_sink_test.cc",
    "peerconnection/peer_connection_dependency_factory_test.cc",
    "peerconnection/peer_connection_tracker_test.cc",
    "peerconnection/rtc_data_channel_test.cc",
    "peerconnection/rtc_encoded_audio_underlying_sink_test.cc",
    "peerconnection/rtc_encoded_audio_underlying_source_test.cc",
    "peerconnection/rtc_encoded_video_underlying_sink_test.cc",
    "peerconnection/rtc_encoded_video_underlying_source_test.cc",
    "peerconnection/rtc_ice_transport_test.cc",
    "peerconnection/rtc_ice_transport_test.h",
    "peerconnection/rtc_peer_connection_handler_test.cc",
    "peerconnection/rtc_peer_connection_test.cc",
    "peerconnection/rtc_rtp_receiver_impl_test.cc",
    "peerconnection/rtc_rtp_sender_impl_test.cc",
    "peerconnection/rtc_rtp_transceiver_impl_test.cc",
    "peerconnection/rtc_sctp_transport_test.cc",
    "peerconnection/thermal_resource_test.cc",
    "peerconnection/thermal_uma_listener_test.cc",
    "peerconnection/transceiver_state_surfacer_test.cc",
    "peerconnection/webrtc_audio_renderer_test.cc",
    "peerconnection/webrtc_media_stream_track_adapter_map_test.cc",
    "peerconnection/webrtc_media_stream_track_adapter_test.cc",
    "peerconnection/webrtc_set_description_observer_test.cc",
    "picture_in_picture/picture_in_picture_controller_test.cc",
    "presentation/mock_presentation_service.h",
    "presentation/presentation_availability_state_test.cc",
    "presentation/presentation_availability_test.cc",
    "presentation/presentation_connection_callbacks_test.cc",
    "presentation/presentation_receiver_test.cc",
    "presentation/presentation_request_test.cc",
    "push_messaging/push_manager_test.cc",
    "push_messaging/push_message_data_test.cc",
    "push_messaging/push_subscription_test.cc",
    "remoteplayback/remote_playback_test.cc",
    "screen_orientation/screen_orientation_controller_test.cc",
    "sensor/ambient_light_sensor_test.cc",
    "sensor/sensor_test_utils.cc",
    "sensor/sensor_test_utils.h",
    "service_worker/service_worker_container_test.cc",
    "service_worker/service_worker_event_queue_test.cc",
    "service_worker/service_worker_installed_scripts_manager_test.cc",
    "service_worker/thread_safe_script_container_test.cc",
    "service_worker/web_embedded_worker_impl_test.cc",
    "video_rvfc/video_frame_callback_requester_impl_test.cc",
    "video_rvfc/video_frame_request_callback_collection_test.cc",
    "wake_lock/wake_lock_manager_test.cc",
    "wake_lock/wake_lock_sentinel_test.cc",
    "wake_lock/wake_lock_test.cc",
    "wake_lock/wake_lock_test_utils.cc",
    "wake_lock/wake_lock_test_utils.h",
    "webaudio/audio_basic_processor_handler_test.cc",
    "webaudio/audio_context_autoplay_test.cc",
    "webaudio/audio_context_test.cc",
    "webaudio/audio_node_input_test.cc",
    "webaudio/audio_worklet_global_scope_test.cc",
    "webaudio/audio_worklet_thread_test.cc",
    "webaudio/convolver_node_test.cc",
    "webaudio/dynamics_compressor_node_test.cc",
    "webaudio/script_processor_node_test.cc",
    "webaudio/stereo_panner_node_test.cc",
    "webdatabase/quota_tracker_test.cc",
    "webshare/navigator_share_test.cc",
    "websockets/dom_websocket_test.cc",
    "websockets/mock_websocket_channel.cc",
    "websockets/mock_websocket_channel.h",
    "websockets/websocket_channel_impl_test.cc",
    "websockets/websocket_common_test.cc",
    "websockets/websocket_message_chunk_accumulator_test.cc",
    "websockets/websocket_stream_test.cc",
    "worklet/animation_and_paint_worklet_thread_test.cc",
    "worklet/worklet_thread_test_common.cc",
    "worklet/worklet_thread_test_common.h",
    "xr/xr_rigid_transform_test.cc",
    "xr/xr_test_utils.cc",
    "xr/xr_view_test.cc",
  ]

  if (is_android) {
    sources += [ "payments/skip_to_gpay_utils_test.cc" ]
  }

  if (rtc_use_h264) {
    sources += [ "mediarecorder/h264_encoder_unittest.cc" ]
  }

  configs += [
    "//third_party/blink/renderer:config",
    "//third_party/blink/renderer:inside_blink",
    "//third_party/blink/renderer/core:blink_core_pch",
  ]

  deps = [
    ":modules",
    ":modules_testing",
    "//base",
    "//base/test:test_support",
    "//build:chromecast_buildflags",
    "//components/schema_org/common:mojom_blink",
    "//components/ukm:test_support",
    "//media:test_support",
    "//media/mojo/mojom",
    "//media/webrtc:webrtc",
    "//mojo/public/cpp/bindings",
    "//net:test_support",
    "//services/device/public/cpp:test_support",
    "//services/metrics/public/cpp:ukm_builders",
    "//skia",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/blink/public:blink_headers",
    "//third_party/blink/public:test_headers",
    "//third_party/blink/public/strings:strings_grit",
    "//third_party/blink/renderer/controller:blink_bindings_test_sources",
    "//third_party/blink/renderer/core",
    "//third_party/blink/renderer/core:testing",
    "//third_party/blink/renderer/core:unit_test_support",
    "//third_party/blink/renderer/modules/breakout_box:unit_tests",
    "//third_party/blink/renderer/modules/file_system_access:unit_tests",
    "//third_party/blink/renderer/modules/gamepad:unit_tests",
    "//third_party/blink/renderer/modules/hid:unit_tests",
    "//third_party/blink/renderer/modules/indexeddb:unit_tests",
    "//third_party/blink/renderer/modules/mediarecorder:buildflags",
    "//third_party/blink/renderer/modules/mediastream:test_support",
    "//third_party/blink/renderer/modules/peerconnection:test_support",
    "//third_party/blink/renderer/modules/storage:unit_tests",
    "//third_party/blink/renderer/modules/webcodecs:unit_tests",
    "//third_party/blink/renderer/modules/webtransport:unit_tests",
    "//third_party/blink/renderer/platform",
    "//third_party/blink/renderer/platform:test_support",
    "//third_party/blink/renderer/platform/wtf",
    "//third_party/googletest:gmock",
    "//third_party/opus",
    "//third_party/webrtc_overrides:webrtc_component",
    "//v8",
  ]

  if (!is_android) {
    deps += [ "//third_party/blink/renderer/modules/direct_sockets:unit_tests" ]
  }

  data_deps = [
    ":accessibility_unittests_data",
    ":mediastream_unittests_data",
  ]
}

group("accessibility_unittests_data") {
  data = [ "accessibility/testing/data/" ]
}

group("mediastream_unittests_data") {
  data = [ "//media/test/data/" ]
}

fuzzer_test("web_app_manifest_fuzzer") {
  sources = [ "manifest/manifest_fuzzer.cc" ]

  dict = "manifest/manifest_fuzzer.dict"
  seed_corpus = "manifest/fuzzer_seed_corpus"

  deps = [
    ":modules",
    "//third_party/blink/renderer/platform:blink_fuzzer_test_support",
  ]
}

if (use_libfuzzer) {
  fuzzer_test("media_capabilities_fuzzer") {
    sources = [ "media_capabilities/media_capabilities_fuzzer.cc" ]

    seed_corpus = "media_capabilities/fuzzer_seed_corpus"

    deps = [
      ":modules",
      "//third_party/blink/renderer/core:testing",
      "//third_party/blink/renderer/modules/media_capabilities:fuzzer_media_configuration_proto",
      "//third_party/blink/renderer/platform:blink_fuzzer_test_support",
      "//third_party/libprotobuf-mutator",
      "//third_party/protobuf:protobuf_lite",
    ]
  }

  fuzzer_test("webcodecs_video_decoder_fuzzer") {
    sources = [
      "webcodecs/fuzzer_utils.cc",
      "webcodecs/fuzzer_utils.h",
      "webcodecs/video_decoder_fuzzer.cc",
    ]

    seed_corpus = "webcodecs/fuzzer_seed_corpus/video_decoder"

    deps = [
      ":modules",
      "//third_party/blink/renderer/core:testing",
      "//third_party/blink/renderer/modules/webcodecs:fuzzer_protos",
      "//third_party/blink/renderer/platform:blink_fuzzer_test_support",
      "//third_party/libprotobuf-mutator",
      "//third_party/protobuf:protobuf_lite",
    ]
  }

  image_decoder_fuzzer_seed_corpus_dir =
      "$target_gen_dir/webcodecs/image_fuzzer_seed_corpus"

  action("generate_image_decoder_fuzzer_corpus") {
    script = "webcodecs/fuzzer_seed_corpus/generate_image_corpus.py"
    sources = [ "webcodecs/image_decoder_base.textproto" ]

    data = [ "//third_party/blink/web_tests/images/resources/" ]

    deps = [
      "//third_party/blink/renderer/modules/webcodecs:fuzzer_protos",
      "//third_party/protobuf:py_proto",
    ]

    pyproto_path = "$root_out_dir/pyproto"

    args = [ "-i" ]
    args += rebase_path(sources, root_build_dir)
    args += [
      "-o",
      "ignored",
      "-d",
      rebase_path(image_decoder_fuzzer_seed_corpus_dir, root_build_dir),
      "-p",
      rebase_path(pyproto_path, root_build_dir),
      "-p",
      rebase_path("$pyproto_path/third_party/blink/renderer/modules/webcodecs/",
                  root_build_dir),
    ]

    outputs = [ image_decoder_fuzzer_seed_corpus_dir ]
  }

  fuzzer_test("webcodecs_image_decoder_fuzzer") {
    sources = [
      "webcodecs/fuzzer_utils.cc",
      "webcodecs/fuzzer_utils.h",
      "webcodecs/image_decoder_fuzzer.cc",
    ]

    seed_corpus = image_decoder_fuzzer_seed_corpus_dir
    seed_corpus_deps = [ ":generate_image_decoder_fuzzer_corpus" ]

    deps = [
      ":modules",
      "//third_party/blink/renderer/core:testing",
      "//third_party/blink/renderer/modules/webcodecs:fuzzer_protos",
      "//third_party/blink/renderer/platform:blink_fuzzer_test_support",
      "//third_party/libprotobuf-mutator",
      "//third_party/protobuf:protobuf_lite",
    ]
  }

  fuzzer_test("webcodecs_audio_decoder_fuzzer") {
    sources = [
      "webcodecs/audio_decoder_fuzzer.cc",
      "webcodecs/fuzzer_utils.cc",
      "webcodecs/fuzzer_utils.h",
    ]

    seed_corpus = "webcodecs/fuzzer_seed_corpus/audio_decoder"

    deps = [
      ":modules",
      "//third_party/blink/renderer/core:testing",
      "//third_party/blink/renderer/modules/webcodecs:fuzzer_protos",
      "//third_party/blink/renderer/platform:blink_fuzzer_test_support",
      "//third_party/libprotobuf-mutator",
      "//third_party/protobuf:protobuf_lite",
    ]
  }

  fuzzer_test("webcodecs_video_encoder_fuzzer") {
    sources = [
      "webcodecs/fuzzer_utils.cc",
      "webcodecs/fuzzer_utils.h",
      "webcodecs/video_encoder_fuzzer.cc",
    ]

    seed_corpus = "webcodecs/fuzzer_seed_corpus/video_encoder"

    deps = [
      ":modules",
      "//third_party/blink/renderer/core:testing",
      "//third_party/blink/renderer/modules/webcodecs:fuzzer_protos",
      "//third_party/blink/renderer/platform:blink_fuzzer_test_support",
      "//third_party/libprotobuf-mutator",
      "//third_party/protobuf:protobuf_lite",
    ]
  }

  fuzzer_test("webcodecs_audio_encoder_fuzzer") {
    sources = [
      "webcodecs/audio_encoder_fuzzer.cc",
      "webcodecs/fuzzer_utils.cc",
      "webcodecs/fuzzer_utils.h",
    ]

    seed_corpus = "webcodecs/fuzzer_seed_corpus/audio_encoder"

    deps = [
      ":modules",
      "//third_party/blink/renderer/core:testing",
      "//third_party/blink/renderer/modules/webcodecs:fuzzer_protos",
      "//third_party/blink/renderer/platform:blink_fuzzer_test_support",
      "//third_party/libprotobuf-mutator",
      "//third_party/protobuf:protobuf_lite",
    ]
  }
}