| # Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. | 
 | # | 
 | # Use of this source code is governed by a BSD-style license | 
 | # that can be found in the LICENSE file in the root of the source | 
 | # tree. An additional intellectual property rights grant can be found | 
 | # in the file PATENTS.  All contributing project authors may | 
 | # be found in the AUTHORS file in the root of the source tree. | 
 |  | 
 | import("../../webrtc.gni") | 
 | if (rtc_enable_protobuf) { | 
 |   import("//third_party/protobuf/proto_library.gni") | 
 | } | 
 |  | 
 | if (rtc_enable_protobuf) { | 
 |   proto_library("network_tester_config_proto") { | 
 |     sources = [ "network_tester_config.proto" ] | 
 |     proto_out_dir = "rtc_tools/network_tester" | 
 |   } | 
 |  | 
 |   proto_library("network_tester_packet_proto") { | 
 |     sources = [ "network_tester_packet.proto" ] | 
 |     proto_out_dir = "rtc_tools/network_tester" | 
 |   } | 
 |  | 
 |   rtc_library("network_tester") { | 
 |     sources = [ | 
 |       "config_reader.cc", | 
 |       "config_reader.h", | 
 |       "packet_logger.cc", | 
 |       "packet_logger.h", | 
 |       "packet_sender.cc", | 
 |       "packet_sender.h", | 
 |       "test_controller.cc", | 
 |       "test_controller.h", | 
 |     ] | 
 |  | 
 |     defines = [ "WEBRTC_NETWORK_TESTER_PROTO" ] | 
 |  | 
 |     deps = [ | 
 |       ":network_tester_config_proto", | 
 |       ":network_tester_packet_proto", | 
 |       "../../api:sequence_checker", | 
 |       "../../api/task_queue", | 
 |       "../../api/task_queue:default_task_queue_factory", | 
 |       "../../api/task_queue:pending_task_safety_flag", | 
 |       "../../api/units:timestamp", | 
 |       "../../p2p:basic_packet_socket_factory", | 
 |       "../../rtc_base:async_packet_socket", | 
 |       "../../rtc_base:checks", | 
 |       "../../rtc_base:ip_address", | 
 |       "../../rtc_base:logging", | 
 |       "../../rtc_base:macromagic", | 
 |       "../../rtc_base:net_helpers", | 
 |       "../../rtc_base:protobuf_utils", | 
 |       "../../rtc_base:socket_address", | 
 |       "../../rtc_base:socket_server", | 
 |       "../../rtc_base:threading", | 
 |       "../../rtc_base:timeutils", | 
 |       "../../rtc_base/network:received_packet", | 
 |       "../../rtc_base/synchronization:mutex", | 
 |       "../../rtc_base/system:no_unique_address", | 
 |       "//third_party/abseil-cpp/absl/functional:any_invocable", | 
 |     ] | 
 |   } | 
 |  | 
 |   network_tester_unittests_resources = [ | 
 |     "../../resources/network_tester/client_config.dat", | 
 |     "../../resources/network_tester/server_config.dat", | 
 |   ] | 
 |  | 
 |   if (is_ios) { | 
 |     bundle_data("network_tester_unittests_bundle_data") { | 
 |       testonly = true | 
 |       sources = network_tester_unittests_resources | 
 |       outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ] | 
 |     } | 
 |   } | 
 |  | 
 |   rtc_library("network_tester_unittests") { | 
 |     testonly = true | 
 |  | 
 |     sources = [ "network_tester_unittest.cc" ] | 
 |  | 
 |     deps = [ | 
 |       ":network_tester", | 
 |       "../../api:rtc_error_matchers", | 
 |       "../../rtc_base:gunit_helpers", | 
 |       "../../rtc_base:random", | 
 |       "../../rtc_base:threading", | 
 |       "../../test:fileutils", | 
 |       "../../test:test_support", | 
 |       "../../test:wait_until", | 
 |       "//testing/gtest", | 
 |     ] | 
 |  | 
 |     if (is_ios) { | 
 |       deps += [ ":network_tester_unittests_bundle_data" ] | 
 |     } | 
 |  | 
 |     defines = [ "WEBRTC_NETWORK_TESTER_TEST_ENABLED" ] | 
 |  | 
 |     data = network_tester_unittests_resources | 
 |   } | 
 |  | 
 |   rtc_executable("network_tester_server") { | 
 |     sources = [ "server.cc" ] | 
 |  | 
 |     deps = [ | 
 |       ":network_tester", | 
 |       "../../rtc_base:null_socket_server", | 
 |       "../../rtc_base:threading", | 
 |     ] | 
 |   } | 
 | } | 
 |  | 
 | if (is_android) { | 
 |   rtc_android_apk("NetworkTesterMobile") { | 
 |     testonly = true | 
 |     apk_name = "NetworkTesterMobile" | 
 |     android_manifest = "androidapp/AndroidManifest.xml" | 
 |     min_sdk_version = 21 | 
 |     target_sdk_version = 24 | 
 |  | 
 |     deps = [ | 
 |       ":NetworkTesterMobile_javalib", | 
 |       ":NetworkTesterMobile_resources", | 
 |       "../../rtc_base:base_java", | 
 |     ] | 
 |  | 
 |     shared_libraries = [ "../../rtc_tools/network_tester:network_tester_so" ] | 
 |   } | 
 |  | 
 |   rtc_android_library("NetworkTesterMobile_javalib") { | 
 |     testonly = true | 
 |     android_manifest = "androidapp/AndroidManifest.xml" | 
 |  | 
 |     sources = [ | 
 |       "androidapp/src/com/google/media/networktester/MainActivity.java", | 
 |       "androidapp/src/com/google/media/networktester/NetworkTester.java", | 
 |     ] | 
 |  | 
 |     resources_package = "com.google.media.networktester" | 
 |     deps = [ | 
 |       ":NetworkTesterMobile_resources", | 
 |       "../../rtc_base:base_java", | 
 |     ] | 
 |   } | 
 |  | 
 |   android_resources("NetworkTesterMobile_resources") { | 
 |     testonly = true | 
 |     custom_package = "com.google.media.networktester" | 
 |     sources = [ | 
 |       "androidapp/res/layout/activity_main.xml", | 
 |       "androidapp/res/mipmap-hdpi/ic_launcher.png", | 
 |       "androidapp/res/mipmap-mdpi/ic_launcher.png", | 
 |       "androidapp/res/mipmap-xhdpi/ic_launcher.png", | 
 |       "androidapp/res/mipmap-xxhdpi/ic_launcher.png", | 
 |       "androidapp/res/mipmap-xxxhdpi/ic_launcher.png", | 
 |       "androidapp/res/values-v17/styles.xml", | 
 |       "androidapp/res/values-w820dp/dimens.xml", | 
 |       "androidapp/res/values/colors.xml", | 
 |       "androidapp/res/values/dimens.xml", | 
 |       "androidapp/res/values/strings.xml", | 
 |     ] | 
 |  | 
 |     # Needed for Bazel converter. | 
 |     resource_dirs = [ "androidapp/res" ] | 
 |     assert(resource_dirs != [])  # Mark as used. | 
 |   } | 
 |  | 
 |   rtc_shared_library("network_tester_so") { | 
 |     sources = [ "jni.cc" ] | 
 |  | 
 |     deps = [ | 
 |       ":network_tester", | 
 |       "../../rtc_base:logging", | 
 |       "../../rtc_base:threading", | 
 |     ] | 
 |  | 
 |     suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ] | 
 |     configs += [ "//build/config/android:hide_all_but_jni" ] | 
 |  | 
 |     output_extension = "so" | 
 |   } | 
 | } |