|  | # 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") | 
|  | 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 = "webrtc/rtc_tools/network_tester" | 
|  | } | 
|  |  | 
|  | proto_library("network_tester_packet_proto") { | 
|  | sources = [ | 
|  | "network_tester_packet.proto", | 
|  | ] | 
|  | proto_out_dir = "webrtc/rtc_tools/network_tester" | 
|  | } | 
|  |  | 
|  | rtc_static_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", | 
|  | "../../base:protobuf_utils", | 
|  | "../../base:rtc_task_queue", | 
|  | "../../base:sequenced_task_checker", | 
|  | "../../p2p", | 
|  | ] | 
|  |  | 
|  | if (!build_with_chromium && is_clang) { | 
|  | # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). | 
|  | suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | 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_source_set("network_tester_unittests") { | 
|  | testonly = true | 
|  |  | 
|  | # Skip restricting visibility on mobile platforms since the tests on those | 
|  | # gets additional generated targets which would require many lines here to | 
|  | # cover (which would be confusing to read and hard to maintain). | 
|  | if (!is_android && !is_ios) { | 
|  | visibility = [ "//webrtc/rtc_tools:tools_unittests" ] | 
|  | } | 
|  | sources = [ | 
|  | "network_tester_unittest.cc", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | ":network_tester", | 
|  | "//testing/gtest", | 
|  | "//webrtc/base:rtc_base_tests_utils", | 
|  | "//webrtc/test:test_support", | 
|  | ] | 
|  |  | 
|  | if (is_ios) { | 
|  | deps += [ ":network_tester_unittests_bundle_data" ] | 
|  | } | 
|  |  | 
|  | defines = [ | 
|  | "GTEST_RELATIVE_PATH", | 
|  | "WEBRTC_NETWORK_TESTER_TEST_ENABLED", | 
|  | ] | 
|  |  | 
|  | data = network_tester_unittests_resources | 
|  |  | 
|  | if (!build_with_chromium && is_clang) { | 
|  | # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). | 
|  | suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | rtc_executable("network_tester_server") { | 
|  | sources = [ | 
|  | "server.cc", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | ":network_tester", | 
|  | ] | 
|  |  | 
|  | if (!build_with_chromium && is_clang) { | 
|  | # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). | 
|  | suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | if (is_android) { | 
|  | android_apk("NetworkTesterMobile") { | 
|  | testonly = true | 
|  | apk_name = "NetworkTesterMobile" | 
|  | android_manifest = "androidapp/AndroidManifest.xml" | 
|  |  | 
|  | deps = [ | 
|  | ":NetworkTesterMobile_javalib", | 
|  | ":NetworkTesterMobile_resources", | 
|  | "//base:base_java", | 
|  | "//webrtc/rtc_base:base_java", | 
|  | ] | 
|  |  | 
|  | shared_libraries = [ "//webrtc/rtc_tools/network_tester:network_tester_so" ] | 
|  | } | 
|  |  | 
|  | android_library("NetworkTesterMobile_javalib") { | 
|  | testonly = true | 
|  | android_manifest = "androidapp/AndroidManifest.xml" | 
|  |  | 
|  | java_files = [ | 
|  | "androidapp/src/com/google/media/networktester/MainActivity.java", | 
|  | "androidapp/src/com/google/media/networktester/NetworkTester.java", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | ":NetworkTesterMobile_resources", | 
|  | "//webrtc/rtc_base:base_java", | 
|  | ] | 
|  | } | 
|  |  | 
|  | android_resources("NetworkTesterMobile_resources") { | 
|  | testonly = true | 
|  | resource_dirs = [ "androidapp/res" ] | 
|  | custom_package = "com.google.media.networktester" | 
|  | } | 
|  |  | 
|  | rtc_shared_library("network_tester_so") { | 
|  | sources = [ | 
|  | "jni.cpp", | 
|  | ] | 
|  |  | 
|  | deps = [ | 
|  | ":network_tester", | 
|  | "../../system_wrappers:field_trial_default", | 
|  | ] | 
|  |  | 
|  | suppressed_configs += [ "//build/config/android:hide_all_but_jni_onload" ] | 
|  | configs += [ "//build/config/android:hide_all_but_jni" ] | 
|  |  | 
|  | output_extension = "so" | 
|  | } | 
|  | } |