1# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. 2# 3# Use of this source code is governed by a BSD-style license 4# that can be found in the LICENSE file in the root of the source 5# tree. An additional intellectual property rights grant can be found 6# in the file PATENTS. All contributing project authors may 7# be found in the AUTHORS file in the root of the source tree. 8 9import("../webrtc.gni") 10if (is_android) { 11 import("//build/config/android/config.gni") 12 import("//build/config/android/rules.gni") 13} 14 15group("pc") { 16 deps = [ ":rtc_pc" ] 17} 18 19config("rtc_pc_config") { 20 defines = [] 21 if (rtc_enable_sctp) { 22 defines += [ "HAVE_SCTP" ] 23 } 24} 25 26rtc_library("rtc_pc_base") { 27 visibility = [ "*" ] 28 defines = [] 29 sources = [ 30 "channel.cc", 31 "channel.h", 32 "channel_interface.h", 33 "channel_manager.cc", 34 "channel_manager.h", 35 "composite_rtp_transport.cc", 36 "composite_rtp_transport.h", 37 "dtls_srtp_transport.cc", 38 "dtls_srtp_transport.h", 39 "dtls_transport.cc", 40 "dtls_transport.h", 41 "external_hmac.cc", 42 "external_hmac.h", 43 "ice_transport.cc", 44 "ice_transport.h", 45 "jsep_transport.cc", 46 "jsep_transport.h", 47 "jsep_transport_controller.cc", 48 "jsep_transport_controller.h", 49 "media_session.cc", 50 "media_session.h", 51 "rtcp_mux_filter.cc", 52 "rtcp_mux_filter.h", 53 "rtp_media_utils.cc", 54 "rtp_media_utils.h", 55 "rtp_transport.cc", 56 "rtp_transport.h", 57 "rtp_transport_internal.h", 58 "sctp_data_channel_transport.cc", 59 "sctp_data_channel_transport.h", 60 "sctp_transport.cc", 61 "sctp_transport.h", 62 "sctp_utils.cc", 63 "sctp_utils.h", 64 "session_description.cc", 65 "session_description.h", 66 "simulcast_description.cc", 67 "simulcast_description.h", 68 "srtp_filter.cc", 69 "srtp_filter.h", 70 "srtp_session.cc", 71 "srtp_session.h", 72 "srtp_transport.cc", 73 "srtp_transport.h", 74 "transport_stats.cc", 75 "transport_stats.h", 76 "used_ids.h", 77 ] 78 79 deps = [ 80 ":media_protocol_names", 81 "../api:array_view", 82 "../api:audio_options_api", 83 "../api:call_api", 84 "../api:function_view", 85 "../api:ice_transport_factory", 86 "../api:libjingle_peerconnection_api", 87 "../api:priority", 88 "../api:rtc_error", 89 "../api:rtp_headers", 90 "../api:rtp_parameters", 91 "../api:rtp_parameters", 92 "../api:scoped_refptr", 93 "../api/crypto:options", 94 "../api/rtc_event_log", 95 "../api/transport:datagram_transport_interface", 96 "../api/video:builtin_video_bitrate_allocator_factory", 97 "../api/video:video_frame", 98 "../api/video:video_rtp_headers", 99 "../call:call_interfaces", 100 "../call:rtp_interfaces", 101 "../call:rtp_receiver", 102 "../common_video", 103 "../common_video:common_video", 104 "../logging:ice_log", 105 "../media:rtc_data", 106 "../media:rtc_h264_profile_id", 107 "../media:rtc_media_base", 108 "../media:rtc_media_config", 109 "../modules/rtp_rtcp:rtp_rtcp", 110 "../modules/rtp_rtcp:rtp_rtcp_format", 111 "../p2p:rtc_p2p", 112 "../rtc_base", 113 "../rtc_base:checks", 114 "../rtc_base:deprecation", 115 "../rtc_base:rtc_task_queue", 116 "../rtc_base:stringutils", 117 "../rtc_base/synchronization:mutex", 118 "../rtc_base/system:file_wrapper", 119 "../rtc_base/system:rtc_export", 120 "../rtc_base/third_party/base64", 121 "../rtc_base/third_party/sigslot", 122 "../system_wrappers:field_trial", 123 "../system_wrappers:metrics", 124 ] 125 absl_deps = [ 126 "//third_party/abseil-cpp/absl/algorithm:container", 127 "//third_party/abseil-cpp/absl/base:core_headers", 128 "//third_party/abseil-cpp/absl/memory", 129 "//third_party/abseil-cpp/absl/strings", 130 "//third_party/abseil-cpp/absl/types:optional", 131 ] 132 133 if (rtc_build_libsrtp) { 134 deps += [ "//third_party/libsrtp" ] 135 } 136 137 public_configs = [ ":rtc_pc_config" ] 138} 139 140rtc_source_set("rtc_pc") { 141 visibility = [ "*" ] 142 allow_poison = [ "audio_codecs" ] # TODO(bugs.webrtc.org/8396): Remove. 143 deps = [ 144 ":rtc_pc_base", 145 "../media:rtc_audio_video", 146 ] 147} 148 149rtc_library("media_protocol_names") { 150 sources = [ 151 "media_protocol_names.cc", 152 "media_protocol_names.h", 153 ] 154} 155 156rtc_library("peerconnection") { 157 visibility = [ "*" ] 158 cflags = [] 159 sources = [ 160 "audio_rtp_receiver.cc", 161 "audio_rtp_receiver.h", 162 "audio_track.cc", 163 "audio_track.h", 164 "data_channel_controller.cc", 165 "data_channel_controller.h", 166 "data_channel_utils.cc", 167 "data_channel_utils.h", 168 "dtmf_sender.cc", 169 "dtmf_sender.h", 170 "ice_server_parsing.cc", 171 "ice_server_parsing.h", 172 "jitter_buffer_delay.cc", 173 "jitter_buffer_delay.h", 174 "jitter_buffer_delay_interface.h", 175 "jitter_buffer_delay_proxy.h", 176 "jsep_ice_candidate.cc", 177 "jsep_session_description.cc", 178 "local_audio_source.cc", 179 "local_audio_source.h", 180 "media_stream.cc", 181 "media_stream.h", 182 "media_stream_observer.cc", 183 "media_stream_observer.h", 184 "media_stream_track.h", 185 "peer_connection.cc", 186 "peer_connection.h", 187 "peer_connection_factory.cc", 188 "peer_connection_factory.h", 189 "peer_connection_internal.h", 190 "remote_audio_source.cc", 191 "remote_audio_source.h", 192 "rtc_stats_collector.cc", 193 "rtc_stats_collector.h", 194 "rtc_stats_traversal.cc", 195 "rtc_stats_traversal.h", 196 "rtp_data_channel.cc", 197 "rtp_data_channel.h", 198 "rtp_parameters_conversion.cc", 199 "rtp_parameters_conversion.h", 200 "rtp_receiver.cc", 201 "rtp_receiver.h", 202 "rtp_sender.cc", 203 "rtp_sender.h", 204 "rtp_transceiver.cc", 205 "rtp_transceiver.h", 206 "sctp_data_channel.cc", 207 "sctp_data_channel.h", 208 "sdp_serializer.cc", 209 "sdp_serializer.h", 210 "sdp_utils.cc", 211 "sdp_utils.h", 212 "stats_collector.cc", 213 "stats_collector.h", 214 "stream_collection.h", 215 "track_media_info_map.cc", 216 "track_media_info_map.h", 217 "video_rtp_receiver.cc", 218 "video_rtp_receiver.h", 219 "video_rtp_track_source.cc", 220 "video_rtp_track_source.h", 221 "video_track.cc", 222 "video_track.h", 223 "video_track_source.cc", 224 "video_track_source.h", 225 "webrtc_sdp.cc", 226 "webrtc_sdp.h", 227 "webrtc_session_description_factory.cc", 228 "webrtc_session_description_factory.h", 229 ] 230 231 deps = [ 232 ":rtc_pc_base", 233 "../api:array_view", 234 "../api:audio_options_api", 235 "../api:call_api", 236 "../api:fec_controller_api", 237 "../api:frame_transformer_interface", 238 "../api:ice_transport_factory", 239 "../api:libjingle_peerconnection_api", 240 "../api:media_stream_interface", 241 "../api:network_state_predictor_api", 242 "../api:priority", 243 "../api:rtc_error", 244 "../api:rtc_event_log_output_file", 245 "../api:rtc_stats_api", 246 "../api:rtp_parameters", 247 "../api:scoped_refptr", 248 "../api/crypto:frame_decryptor_interface", 249 "../api/rtc_event_log", 250 "../api/task_queue", 251 "../api/transport:datagram_transport_interface", 252 "../api/transport:field_trial_based_config", 253 "../api/units:data_rate", 254 "../api/video:builtin_video_bitrate_allocator_factory", 255 "../api/video:video_frame", 256 "../api/video:video_rtp_headers", 257 "../api/video_codecs:video_codecs_api", 258 "../call:call_interfaces", 259 "../common_video", 260 "../logging:ice_log", 261 "../media:rtc_data", 262 "../media:rtc_media_base", 263 "../modules/rtp_rtcp:rtp_rtcp_format", 264 "../p2p:rtc_p2p", 265 "../rtc_base", 266 "../rtc_base:checks", 267 "../rtc_base:rtc_base_approved", 268 "../rtc_base:rtc_operations_chain", 269 "../rtc_base:safe_minmax", 270 "../rtc_base:weak_ptr", 271 "../rtc_base/experiments:field_trial_parser", 272 "../rtc_base/synchronization:mutex", 273 "../rtc_base/system:file_wrapper", 274 "../rtc_base/system:rtc_export", 275 "../rtc_base/third_party/base64", 276 "../rtc_base/third_party/sigslot", 277 "../stats", 278 "../system_wrappers", 279 "../system_wrappers:field_trial", 280 "../system_wrappers:metrics", 281 ] 282 absl_deps = [ 283 "//third_party/abseil-cpp/absl/algorithm:container", 284 "//third_party/abseil-cpp/absl/strings", 285 "//third_party/abseil-cpp/absl/types:optional", 286 ] 287} 288 289rtc_source_set("libjingle_peerconnection") { 290 visibility = [ "*" ] 291 deps = [ 292 ":peerconnection", 293 "../api:libjingle_peerconnection_api", 294 ] 295} 296 297if (rtc_include_tests) { 298 rtc_test("rtc_pc_unittests") { 299 testonly = true 300 301 sources = [ 302 "channel_manager_unittest.cc", 303 "channel_unittest.cc", 304 "composite_rtp_transport_test.cc", 305 "dtls_srtp_transport_unittest.cc", 306 "dtls_transport_unittest.cc", 307 "ice_transport_unittest.cc", 308 "jsep_transport_controller_unittest.cc", 309 "jsep_transport_unittest.cc", 310 "media_session_unittest.cc", 311 "rtcp_mux_filter_unittest.cc", 312 "rtp_transport_unittest.cc", 313 "sctp_transport_unittest.cc", 314 "session_description_unittest.cc", 315 "srtp_filter_unittest.cc", 316 "srtp_session_unittest.cc", 317 "srtp_transport_unittest.cc", 318 "test/rtp_transport_test_util.h", 319 "test/srtp_test_util.h", 320 "used_ids_unittest.cc", 321 "video_rtp_receiver_unittest.cc", 322 ] 323 324 include_dirs = [ "//third_party/libsrtp/srtp" ] 325 326 if (is_win) { 327 libs = [ "strmiids.lib" ] 328 } 329 330 deps = [ 331 ":libjingle_peerconnection", 332 ":pc_test_utils", 333 ":peerconnection", 334 ":rtc_pc", 335 ":rtc_pc_base", 336 "../api:array_view", 337 "../api:audio_options_api", 338 "../api:ice_transport_factory", 339 "../api:libjingle_peerconnection_api", 340 "../api:rtc_error", 341 "../api:rtp_headers", 342 "../api:rtp_parameters", 343 "../api/video:builtin_video_bitrate_allocator_factory", 344 "../api/video/test:mock_recordable_encoded_frame", 345 "../call:rtp_interfaces", 346 "../call:rtp_receiver", 347 "../media:rtc_data", 348 "../media:rtc_media_base", 349 "../media:rtc_media_tests_utils", 350 "../modules/rtp_rtcp:rtp_rtcp_format", 351 "../p2p:fake_ice_transport", 352 "../p2p:fake_port_allocator", 353 "../p2p:p2p_test_utils", 354 "../p2p:rtc_p2p", 355 "../rtc_base", 356 "../rtc_base:checks", 357 "../rtc_base:gunit_helpers", 358 "../rtc_base:rtc_base_approved", 359 "../rtc_base:rtc_base_tests_utils", 360 "../rtc_base/third_party/sigslot", 361 "../system_wrappers:metrics", 362 "../test:test_main", 363 "../test:test_support", 364 "//third_party/abseil-cpp/absl/algorithm:container", 365 "//third_party/abseil-cpp/absl/memory", 366 "//third_party/abseil-cpp/absl/strings", 367 ] 368 369 if (rtc_build_libsrtp) { 370 deps += [ "//third_party/libsrtp" ] 371 } 372 373 if (is_android) { 374 deps += [ "//testing/android/native_test:native_test_support" ] 375 } 376 } 377 378 rtc_library("peerconnection_perf_tests") { 379 testonly = true 380 sources = [ "peer_connection_rampup_tests.cc" ] 381 deps = [ 382 ":pc_test_utils", 383 ":peerconnection_wrapper", 384 "../api:audio_options_api", 385 "../api:create_peerconnection_factory", 386 "../api:libjingle_peerconnection_api", 387 "../api:media_stream_interface", 388 "../api:rtc_stats_api", 389 "../api:scoped_refptr", 390 "../api/audio:audio_mixer_api", 391 "../api/audio_codecs:audio_codecs_api", 392 "../api/audio_codecs:builtin_audio_decoder_factory", 393 "../api/audio_codecs:builtin_audio_encoder_factory", 394 "../api/video_codecs:builtin_video_decoder_factory", 395 "../api/video_codecs:builtin_video_encoder_factory", 396 "../api/video_codecs:video_codecs_api", 397 "../media:rtc_media_tests_utils", 398 "../modules/audio_device:audio_device_api", 399 "../modules/audio_processing:api", 400 "../p2p:p2p_test_utils", 401 "../p2p:rtc_p2p", 402 "../pc:peerconnection", 403 "../rtc_base", 404 "../rtc_base:checks", 405 "../rtc_base:gunit_helpers", 406 "../rtc_base:rtc_base_tests_utils", 407 "../system_wrappers", 408 "../test:perf_test", 409 "../test:test_support", 410 ] 411 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 412 } 413 414 rtc_library("peerconnection_wrapper") { 415 testonly = true 416 sources = [ 417 "peer_connection_wrapper.cc", 418 "peer_connection_wrapper.h", 419 ] 420 deps = [ 421 ":pc_test_utils", 422 "../api:function_view", 423 "../api:libjingle_peerconnection_api", 424 "../api:media_stream_interface", 425 "../api:rtc_error", 426 "../api:rtc_stats_api", 427 "../api:rtp_parameters", 428 "../api:scoped_refptr", 429 "../pc:peerconnection", 430 "../rtc_base:checks", 431 "../rtc_base:gunit_helpers", 432 "../rtc_base:rtc_base_approved", 433 "../test:test_support", 434 ] 435 } 436 437 rtc_library("pc_test_utils") { 438 testonly = true 439 sources = [ 440 "test/fake_audio_capture_module.cc", 441 "test/fake_audio_capture_module.h", 442 "test/fake_data_channel_provider.h", 443 "test/fake_peer_connection_base.h", 444 "test/fake_peer_connection_for_stats.h", 445 "test/fake_periodic_video_source.h", 446 "test/fake_periodic_video_track_source.h", 447 "test/fake_rtc_certificate_generator.h", 448 "test/fake_sctp_transport.h", 449 "test/fake_video_track_renderer.h", 450 "test/fake_video_track_source.h", 451 "test/frame_generator_capturer_video_track_source.h", 452 "test/mock_channel_interface.h", 453 "test/mock_data_channel.h", 454 "test/mock_delayable.h", 455 "test/mock_peer_connection_observers.h", 456 "test/mock_rtp_receiver_internal.h", 457 "test/mock_rtp_sender_internal.h", 458 "test/peer_connection_test_wrapper.cc", 459 "test/peer_connection_test_wrapper.h", 460 "test/rtc_stats_obtainer.h", 461 "test/test_sdp_strings.h", 462 ] 463 464 deps = [ 465 ":libjingle_peerconnection", 466 ":peerconnection", 467 ":rtc_pc_base", 468 "../api:audio_options_api", 469 "../api:create_frame_generator", 470 "../api:create_peerconnection_factory", 471 "../api:libjingle_peerconnection_api", 472 "../api:media_stream_interface", 473 "../api:rtc_error", 474 "../api:rtc_stats_api", 475 "../api:scoped_refptr", 476 "../api/audio:audio_mixer_api", 477 "../api/audio_codecs:audio_codecs_api", 478 "../api/task_queue", 479 "../api/task_queue:default_task_queue_factory", 480 "../api/video:builtin_video_bitrate_allocator_factory", 481 "../api/video:video_frame", 482 "../api/video:video_rtp_headers", 483 "../api/video_codecs:builtin_video_decoder_factory", 484 "../api/video_codecs:builtin_video_encoder_factory", 485 "../api/video_codecs:video_codecs_api", 486 "../call:call_interfaces", 487 "../media:rtc_data", 488 "../media:rtc_media", 489 "../media:rtc_media_base", 490 "../media:rtc_media_tests_utils", 491 "../modules/audio_device", 492 "../modules/audio_processing", 493 "../modules/audio_processing:api", 494 "../p2p:fake_port_allocator", 495 "../p2p:p2p_test_utils", 496 "../p2p:rtc_p2p", 497 "../rtc_base", 498 "../rtc_base:checks", 499 "../rtc_base:gunit_helpers", 500 "../rtc_base:rtc_base_approved", 501 "../rtc_base:rtc_task_queue", 502 "../rtc_base:task_queue_for_test", 503 "../rtc_base/synchronization:mutex", 504 "../rtc_base/synchronization:sequence_checker", 505 "../rtc_base/task_utils:repeating_task", 506 "../rtc_base/third_party/sigslot", 507 "../test:test_support", 508 "../test:video_test_common", 509 ] 510 absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ] 511 } 512 513 rtc_test("peerconnection_unittests") { 514 testonly = true 515 sources = [ 516 "data_channel_unittest.cc", 517 "dtmf_sender_unittest.cc", 518 "ice_server_parsing_unittest.cc", 519 "jitter_buffer_delay_unittest.cc", 520 "jsep_session_description_unittest.cc", 521 "local_audio_source_unittest.cc", 522 "media_stream_unittest.cc", 523 "peer_connection_adaptation_integrationtest.cc", 524 "peer_connection_bundle_unittest.cc", 525 "peer_connection_crypto_unittest.cc", 526 "peer_connection_data_channel_unittest.cc", 527 "peer_connection_end_to_end_unittest.cc", 528 "peer_connection_factory_unittest.cc", 529 "peer_connection_header_extension_unittest.cc", 530 "peer_connection_histogram_unittest.cc", 531 "peer_connection_ice_unittest.cc", 532 "peer_connection_integrationtest.cc", 533 "peer_connection_interface_unittest.cc", 534 "peer_connection_jsep_unittest.cc", 535 "peer_connection_media_unittest.cc", 536 "peer_connection_rtp_unittest.cc", 537 "peer_connection_signaling_unittest.cc", 538 "peer_connection_simulcast_unittest.cc", 539 "peer_connection_wrapper.cc", 540 "peer_connection_wrapper.h", 541 "proxy_unittest.cc", 542 "rtc_stats_collector_unittest.cc", 543 "rtc_stats_integrationtest.cc", 544 "rtc_stats_traversal_unittest.cc", 545 "rtp_media_utils_unittest.cc", 546 "rtp_parameters_conversion_unittest.cc", 547 "rtp_sender_receiver_unittest.cc", 548 "rtp_transceiver_unittest.cc", 549 "sctp_utils_unittest.cc", 550 "sdp_serializer_unittest.cc", 551 "stats_collector_unittest.cc", 552 "test/fake_audio_capture_module_unittest.cc", 553 "test/test_sdp_strings.h", 554 "track_media_info_map_unittest.cc", 555 "video_rtp_track_source_unittest.cc", 556 "video_track_unittest.cc", 557 "webrtc_sdp_unittest.cc", 558 ] 559 560 if (rtc_enable_sctp) { 561 defines = [ "HAVE_SCTP" ] 562 } 563 564 deps = [ 565 ":peerconnection", 566 ":rtc_pc_base", 567 "../api:array_view", 568 "../api:audio_options_api", 569 "../api:create_peerconnection_factory", 570 "../api:fake_frame_decryptor", 571 "../api:fake_frame_encryptor", 572 "../api:function_view", 573 "../api:libjingle_logging_api", 574 "../api:libjingle_peerconnection_api", 575 "../api:media_stream_interface", 576 "../api:mock_rtp", 577 "../api:rtc_error", 578 "../api:scoped_refptr", 579 "../api/audio:audio_mixer_api", 580 "../api/crypto:frame_decryptor_interface", 581 "../api/crypto:frame_encryptor_interface", 582 "../api/crypto:options", 583 "../api/rtc_event_log", 584 "../api/rtc_event_log:rtc_event_log_factory", 585 "../api/task_queue:default_task_queue_factory", 586 "../api/transport/rtp:rtp_source", 587 "../api/units:time_delta", 588 "../api/video:builtin_video_bitrate_allocator_factory", 589 "../call/adaptation:resource_adaptation_test_utilities", 590 "../logging:fake_rtc_event_log", 591 "../media:rtc_media_config", 592 "../media:rtc_media_engine_defaults", 593 "../modules/audio_device:audio_device_api", 594 "../modules/audio_processing:audio_processing_statistics", 595 "../modules/audio_processing:audioproc_test_utils", 596 "../modules/rtp_rtcp:rtp_rtcp_format", 597 "../p2p:fake_ice_transport", 598 "../p2p:fake_port_allocator", 599 "../rtc_base:checks", 600 "../rtc_base:gunit_helpers", 601 "../rtc_base:rtc_base_tests_utils", 602 "../rtc_base:rtc_json", 603 "../rtc_base/synchronization:mutex", 604 "../rtc_base/third_party/base64", 605 "../rtc_base/third_party/sigslot", 606 "../system_wrappers:metrics", 607 "../test:field_trial", 608 "../test:fileutils", 609 "../test:rtp_test_utils", 610 "./scenario_tests:pc_scenario_tests", 611 "//third_party/abseil-cpp/absl/algorithm:container", 612 "//third_party/abseil-cpp/absl/memory", 613 "//third_party/abseil-cpp/absl/strings", 614 "//third_party/abseil-cpp/absl/types:optional", 615 ] 616 if (is_android) { 617 deps += [ ":android_black_magic" ] 618 } 619 620 deps += [ 621 ":libjingle_peerconnection", 622 ":pc_test_utils", 623 "../api:callfactory_api", 624 "../api:rtc_event_log_output_file", 625 "../api:rtc_stats_api", 626 "../api:rtp_parameters", 627 "../api/audio_codecs:audio_codecs_api", 628 "../api/audio_codecs:builtin_audio_decoder_factory", 629 "../api/audio_codecs:builtin_audio_encoder_factory", 630 "../api/audio_codecs:opus_audio_decoder_factory", 631 "../api/audio_codecs:opus_audio_encoder_factory", 632 "../api/audio_codecs/L16:audio_decoder_L16", 633 "../api/audio_codecs/L16:audio_encoder_L16", 634 "../api/video_codecs:builtin_video_decoder_factory", 635 "../api/video_codecs:builtin_video_encoder_factory", 636 "../api/video_codecs:video_codecs_api", 637 "../call:call_interfaces", 638 "../media:rtc_audio_video", 639 "../media:rtc_data", # TODO(phoglund): AFAIK only used for one sctp 640 # constant. 641 "../media:rtc_media_base", 642 "../media:rtc_media_tests_utils", 643 "../modules/audio_processing", 644 "../modules/audio_processing:api", 645 "../modules/utility", 646 "../p2p:p2p_test_utils", 647 "../p2p:rtc_p2p", 648 "../pc:rtc_pc", 649 "../rtc_base", 650 "../rtc_base:rtc_base_approved", 651 "../rtc_base:rtc_task_queue", 652 "../rtc_base:safe_conversions", 653 "../test:audio_codec_mocks", 654 "../test:test_main", 655 "../test:test_support", 656 ] 657 658 if (is_android) { 659 deps += [ 660 "//testing/android/native_test:native_test_support", 661 662 # We need to depend on this one directly, or classloads will fail for 663 # the voice engine BuildInfo, for instance. 664 "../sdk/android:libjingle_peerconnection_java", 665 ] 666 667 shard_timeout = 900 668 } 669 } 670 671 if (is_android) { 672 rtc_library("android_black_magic") { 673 # The android code uses hacky includes to chromium-base and the ssl code; 674 # having this in a separate target enables us to keep the peerconnection 675 # unit tests clean. 676 check_includes = false 677 testonly = true 678 sources = [ 679 "test/android_test_initializer.cc", 680 "test/android_test_initializer.h", 681 ] 682 deps = [ 683 "../sdk/android:libjingle_peerconnection_jni", 684 "//testing/android/native_test:native_test_support", 685 ] 686 } 687 } 688} 689