# Copyright 2016 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/features.gni") import("//testing/test.gni") if (is_android) { import("//build/config/android/rules.gni") } # This file depends on the legacy global sources assignment filter. It should # be converted to check target platform before assigning source files to the # sources variable. Remove this import and set_sources_assignment_filter call # when the file has been converted. See https://crbug.com/1018739 for details. import("//build/config/deprecated_default_sources_assignment_filter.gni") set_sources_assignment_filter(deprecated_default_sources_assignment_filter) is_serial_enabled_platform = is_win || ((is_linux || is_chromeos) && use_udev) || is_mac source_set("lib") { # This should be visible only to embedders of the Device Service, and the # dependence should only be for the purpose of embedding the Device Service. visibility = [ ":test_support", ":tests", "//content/browser", "//services/device/public/cpp:test_support", ] sources = [ "device_service.cc", "device_service.h", ] configs += [ "//build/config/compiler:wexit_time_destructors" ] deps = [ ":binder_overrides", "//build:chromeos_buildflags", "//services/device/fingerprint", "//services/device/generic_sensor", "//services/device/geolocation", "//services/device/power_monitor", "//services/device/public/cpp:device_features", "//services/device/public/mojom:usb", "//services/device/public/mojom:usb_test", "//services/device/screen_orientation", "//services/device/time_zone_monitor", "//services/device/usb/mojo", "//services/device/wake_lock", "//services/service_manager/public/cpp", "//ui/gfx", ] public_deps = [ "//base", "//mojo/public/cpp/bindings", "//services/device/public/mojom", "//services/device/public/mojom:device_service", ] if (is_android) { deps += [ ":device_service_jni_headers" ] } else { deps += [ "//services/device/battery", "//services/device/hid", "//services/device/vibration", ] } if (is_chromeos && use_dbus) { deps += [ "//services/device/bluetooth:bluetooth_system", "//services/device/media_transfer_protocol", ] } if (is_serial_enabled_platform) { deps += [ "//services/device/serial" ] } if (chromeos_is_browser_only) { deps += [ "//chromeos/crosapi/mojom", "//chromeos/lacros", ] } } # NOTE: We use a separate component target to support global binder overrides, # since the service implementation itself may be linked into multiple # simultaneously loaded binary targets in a component build. The ":lib" target # cannot be a component target itself because it depends on generated JNI # headers that do not currently support component exports. component("binder_overrides") { visibility = [ ":lib" ] output_name = "device_service_binder_overrides" sources = [ "binder_overrides.cc", "binder_overrides.h", ] public_deps = [ "//base", "//mojo/public/cpp/bindings", "//services/device/public/mojom", ] defines = [ "IS_DEVICE_SERVICE_BINDER_OVERRIDES_IMPL" ] } is_linux_without_udev = (is_linux || is_chromeos) && !use_udev source_set("perftests") { testonly = true sources = [ "geolocation/position_cache_impl_perftest.cc" ] deps = [ ":test_support", "//base", "//base/test:test_support", "//services/device/geolocation", "//services/device/geolocation:test_support", "//testing/gtest", "//testing/perf", ] } source_set("tests") { testonly = true sources = [ "battery/battery_status_manager_win_unittest.cc", "battery/battery_status_service_unittest.cc", "generic_sensor/absolute_orientation_euler_angles_fusion_algorithm_using_accelerometer_and_magnetometer_unittest.cc", "generic_sensor/fake_platform_sensor_and_provider.cc", "generic_sensor/fake_platform_sensor_and_provider.h", "generic_sensor/fake_platform_sensor_fusion.cc", "generic_sensor/fake_platform_sensor_fusion.h", "generic_sensor/generic_sensor_service_unittest.cc", "generic_sensor/linear_acceleration_fusion_algorithm_using_accelerometer_unittest.cc", "generic_sensor/orientation_euler_angles_fusion_algorithm_using_quaternion_unittest.cc", "generic_sensor/orientation_quaternion_fusion_algorithm_using_euler_angles_unittest.cc", "generic_sensor/orientation_test_data.h", "generic_sensor/platform_sensor_and_provider_unittest.cc", "generic_sensor/platform_sensor_and_provider_unittest_win.cc", "generic_sensor/platform_sensor_fusion_unittest.cc", "generic_sensor/platform_sensor_provider_unittest_android.cc", "generic_sensor/platform_sensor_util_unittest.cc", "generic_sensor/relative_orientation_euler_angles_fusion_algorithm_using_accelerometer_and_gyroscope_unittest.cc", "generic_sensor/relative_orientation_euler_angles_fusion_algorithm_using_accelerometer_unittest.cc", "geolocation/core_location_provider_unittest.mm", "geolocation/geolocation_provider_impl_unittest.cc", "geolocation/geolocation_service_unittest.cc", "geolocation/location_arbitrator_unittest.cc", "geolocation/network_location_provider_unittest.cc", "geolocation/position_cache_impl_unittest.cc", "geolocation/public_ip_address_geolocator_unittest.cc", "geolocation/public_ip_address_location_notifier_unittest.cc", "geolocation/wifi_data_provider_chromeos_unittest.cc", "geolocation/wifi_data_provider_common_unittest.cc", "geolocation/wifi_data_provider_win_unittest.cc", "geolocation/wifi_polling_policy_unittest.cc", "power_monitor/power_monitor_message_broadcaster_unittest.cc", "public/cpp/power_monitor/power_monitor_broadcast_source_unittest.cc", "vibration/vibration_manager_impl_unittest.cc", "wake_lock/wake_lock_unittest.cc", ] deps = [ ":lib", ":test_support", "//base", "//base/test:test_support", "//base/third_party/dynamic_annotations", "//device/base/synchronization", "//mojo/public/cpp/bindings", "//net", "//net:test_support", "//services/device/generic_sensor", "//services/device/geolocation", "//services/device/geolocation:test_support", "//services/device/power_monitor", "//services/device/public/cpp:device_features", "//services/device/public/cpp/bluetooth:bluetooth_tests", "//services/device/public/cpp/power_monitor", "//services/device/public/mojom", "//services/device/wake_lock", "//services/network:test_support", "//testing/gmock", "//testing/gtest", ] if (!is_linux_without_udev) { sources += [ "generic_sensor/platform_sensor_and_provider_unittest_linux.cc" ] } if (is_linux && !is_chromeos && use_dbus) { sources += [ "battery/battery_status_manager_linux_unittest.cc", "geolocation/wifi_data_provider_linux_unittest.cc", ] deps += [ "//dbus:test_support" ] } if (is_chromeos) { sources += [ "fingerprint/fingerprint_chromeos_unittest.cc" ] deps += [ "//chromeos/dbus:test_support", "//chromeos/dbus/biod:test_support", "//chromeos/network:test_support", "//services/device/bluetooth:bluetooth_system_tests", "//services/device/fingerprint", "//third_party/protobuf:protobuf_lite", ] } if (is_android) { sources -= [ "battery/battery_status_service_unittest.cc", "geolocation/network_location_provider_unittest.cc", "geolocation/wifi_data_provider_common_unittest.cc", ] deps += [ ":device_service_jni_headers", "//services/device/public/java:geolocation_java_test_support", "//services/device/usb:java", "//services/device/vibration/android:vibration_jni_headers", ] } else { sources += [ "battery/battery_monitor_impl_unittest.cc", "hid/hid_manager_unittest.cc", ] deps += [ "//services/device/battery", "//services/device/hid:mocks", "//services/device/public/cpp/hid", "//services/device/vibration", ] if (!is_linux_without_udev) { sources += [ "hid/hid_connection_impl_unittest.cc", "hid/input_service_linux_unittest.cc", "hid/test_report_descriptors.cc", "hid/test_report_descriptors.h", "public/cpp/hid/hid_device_filter_unittest.cc", "public/cpp/hid/hid_report_descriptor_unittest.cc", ] if (!is_fuchsia) { # Fuchsia does not currently implement HidService. sources += [ "hid/hid_service_unittest.cc" ] } if (!is_ios) { sources += [ "hid/hid_connection_unittest.cc" ] deps += [ ":usb_test_gadget", "//net:test_support", "//services/device/usb", ] } } } if (is_serial_enabled_platform) { sources += [ "serial/bluetooth_serial_port_impl_unittest.cc", "serial/serial_device_enumerator_linux_unittest.cc", "serial/serial_device_enumerator_unittest.cc", "serial/serial_port_impl_unittest.cc", "serial/serial_port_manager_impl_unittest.cc", ] if (is_posix) { sources += [ "serial/serial_io_handler_posix_unittest.cc" ] } if (is_linux || is_chromeos) { deps += [ "//device/udev_linux:test_support" ] } deps += [ "//device/bluetooth:mocks", "//services/device/public/cpp/bluetooth:bluetooth", "//services/device/public/cpp/serial:switches", "//services/device/serial", "//services/device/serial:test_support", ] } # USB does not compile on iOS. if (!is_ios) { sources += [ "public/cpp/usb/usb_utils_unittest.cc", "usb/mojo/device_impl_unittest.cc", "usb/mojo/device_manager_impl_unittest.cc", "usb/usb_descriptors_unittest.cc", "usb/usb_device_handle_unittest.cc", "usb/usb_service_unittest.cc", "usb/webusb_descriptors_unittest.cc", ] deps += [ ":usb_test_gadget", "//device/base", "//net:test_support", "//services/device/public/cpp:test_support", "//services/device/public/cpp/usb", "//services/device/public/mojom", "//services/device/usb", "//services/device/usb:test_support", "//services/device/usb/mojo", ] if (!is_android) { sources += [ "public/cpp/usb/usb_ids_unittest.cc" ] } } # UsbContext is a libusb-specific object. if (is_mac || is_win) { sources += [ "usb/usb_context_unittest.cc" ] deps += [ "//third_party/libusb" ] } if (is_win) { sources += [ "generic_sensor/platform_sensor_provider_winrt_unittest.cc", "generic_sensor/platform_sensor_reader_winrt_unittests.cc", "geolocation/win/fake_geocoordinate_winrt.cc", "geolocation/win/fake_geocoordinate_winrt.h", "geolocation/win/fake_geolocator_winrt.cc", "geolocation/win/fake_geolocator_winrt.h", "geolocation/win/fake_geoposition_winrt.cc", "geolocation/win/fake_geoposition_winrt.h", "geolocation/win/fake_position_changed_event_args_winrt.cc", "geolocation/win/fake_position_changed_event_args_winrt.h", "geolocation/win/fake_status_changed_event_args_winrt.cc", "geolocation/win/fake_status_changed_event_args_winrt.h", "geolocation/win/location_provider_winrt_unittest.cc", ] # Needed for "generic_sensor/platform_sensor_and_provider_unittest_win.cc" libs = [ "propsys.lib", "sensorsapi.lib", ] } } source_set("test_support") { testonly = true sources = [ "device_service_test_base.cc", "device_service_test_base.h", ] deps = [ ":lib", "//base", "//base/test:test_support", "//mojo/public/cpp/bindings", "//net", "//net:test_support", "//services/device/public/cpp/geolocation", "//services/device/public/mojom:device_service", "//services/network:test_support", "//services/service_manager/public/cpp", "//services/service_manager/public/cpp/test:test_support", "//testing/gtest", ] } if (is_android) { generate_jni("device_service_jni_headers") { sources = [ "android/java/src/org/chromium/services/device/InterfaceRegistrar.java", "public/java/src/org/chromium/device/DeviceFeatureList.java", ] } android_library("java") { # This should be visible only to embedders of the Device Service, and the # dependence should only be for the purpose of embedding the Device Service. # //content/public/android:* here actually wants to identify the # //content/public/android:content_java target and all of its generated # targets which also need to see this target as well. # //services:* identifies //services:service_unittests and all of its # generated targets. visibility = [ "//content/public/android:*", "//services:*", ] sources = [ "android/java/src/org/chromium/services/device/InterfaceRegistrar.java", ] deps = [ "//base:base_java", "//mojo/public/java:bindings_java", "//mojo/public/java:system_java", "//mojo/public/java/system:system_impl_java", "//services/device/battery/android:battery_monitor_java", "//services/device/generic_sensor:java", "//services/device/geolocation:geolocation_java", "//services/device/nfc/android:java", "//services/device/public/java:nfc_java", "//services/device/public/mojom:mojom_java", "//services/device/screen_orientation:java", "//services/device/time_zone_monitor:java", "//services/device/usb:java", "//services/device/vibration/android:vibration_manager_java", "//services/device/wake_lock/power_save_blocker:java", "//services/service_manager/public/java:service_manager_java", "//services/service_manager/public/mojom:mojom_java", ] } } source_set("usb_test_gadget") { testonly = true sources = [ "test/usb_test_gadget.h", "test/usb_test_gadget_impl.cc", ] deps = [ "//device/base", "//net:test_support", "//services/device/usb", "//tools/usb_gadget", ] }