BUILD.gn 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508
  1. # Copyright 2016 The Chromium Authors. All rights reserved.
  2. # Use of this source code is governed by a BSD-style license that can be
  3. # found in the LICENSE file.
  4. import("//build/config/chromeos/ui_mode.gni")
  5. import("//build/config/chromeos/ui_mode.gni")
  6. import("//build/config/features.gni")
  7. import("//testing/test.gni")
  8. if (is_chromeos) {
  9. import("//chromeos/components/sensors/buildflags.gni")
  10. }
  11. if (is_android) {
  12. import("//build/config/android/rules.gni")
  13. }
  14. is_serial_enabled_platform =
  15. is_win || ((is_linux || is_chromeos) && use_udev) || is_mac
  16. source_set("lib") {
  17. # This should be visible only to embedders of the Device Service, and the
  18. # dependence should only be for the purpose of embedding the Device Service.
  19. visibility = [
  20. ":test_support",
  21. ":tests",
  22. "//content/browser",
  23. "//services/device/public/cpp:test_support",
  24. ]
  25. sources = [
  26. "device_service.cc",
  27. "device_service.h",
  28. ]
  29. configs += [ "//build/config/compiler:wexit_time_destructors" ]
  30. deps = [
  31. ":binder_overrides",
  32. "//build:chromeos_buildflags",
  33. "//services/device/compute_pressure",
  34. "//services/device/device_posture",
  35. "//services/device/fingerprint",
  36. "//services/device/generic_sensor",
  37. "//services/device/geolocation",
  38. "//services/device/power_monitor",
  39. "//services/device/public/cpp:device_features",
  40. "//services/device/public/mojom:usb",
  41. "//services/device/public/mojom:usb_test",
  42. "//services/device/screen_orientation",
  43. "//services/device/time_zone_monitor",
  44. "//services/device/usb/mojo",
  45. "//services/device/wake_lock",
  46. "//services/service_manager/public/cpp",
  47. "//ui/gfx",
  48. ]
  49. public_deps = [
  50. "//base",
  51. "//mojo/public/cpp/bindings",
  52. "//services/device/public/mojom",
  53. "//services/device/public/mojom:device_service",
  54. ]
  55. if (is_android) {
  56. deps += [ ":device_service_jni_headers" ]
  57. } else {
  58. deps += [
  59. "//services/device/battery",
  60. "//services/device/hid",
  61. "//services/device/vibration",
  62. ]
  63. }
  64. if (is_chromeos_ash && use_dbus) {
  65. deps += [
  66. "//services/device/bluetooth:bluetooth_system",
  67. "//services/device/media_transfer_protocol",
  68. ]
  69. }
  70. if (is_serial_enabled_platform) {
  71. deps += [ "//services/device/serial" ]
  72. }
  73. if (is_chromeos_lacros) {
  74. deps += [
  75. "//chromeos/crosapi/mojom",
  76. "//chromeos/lacros",
  77. ]
  78. }
  79. if (is_serial_enabled_platform) {
  80. defines = [ "IS_SERIAL_ENABLED_PLATFORM" ]
  81. }
  82. }
  83. # NOTE: We use a separate component target to support global binder overrides,
  84. # since the service implementation itself may be linked into multiple
  85. # simultaneously loaded binary targets in a component build. The ":lib" target
  86. # cannot be a component target itself because it depends on generated JNI
  87. # headers that do not currently support component exports.
  88. component("binder_overrides") {
  89. visibility = [ ":lib" ]
  90. output_name = "device_service_binder_overrides"
  91. sources = [
  92. "binder_overrides.cc",
  93. "binder_overrides.h",
  94. ]
  95. public_deps = [
  96. "//base",
  97. "//mojo/public/cpp/bindings",
  98. "//services/device/public/mojom",
  99. ]
  100. defines = [ "IS_DEVICE_SERVICE_BINDER_OVERRIDES_IMPL" ]
  101. }
  102. source_set("perftests") {
  103. testonly = true
  104. sources = [ "geolocation/position_cache_impl_perftest.cc" ]
  105. deps = [
  106. ":test_support",
  107. "//base",
  108. "//base/test:test_support",
  109. "//services/device/geolocation",
  110. "//services/device/geolocation:test_support",
  111. "//testing/gtest",
  112. "//testing/perf",
  113. ]
  114. }
  115. source_set("tests") {
  116. testonly = true
  117. sources = [
  118. "battery/battery_status_service_unittest.cc",
  119. "compute_pressure/platform_collector_unittest.cc",
  120. "compute_pressure/pressure_manager_impl_unittest.cc",
  121. "compute_pressure/pressure_test_support.cc",
  122. "compute_pressure/pressure_test_support.h",
  123. "generic_sensor/absolute_orientation_euler_angles_fusion_algorithm_using_accelerometer_and_magnetometer_unittest.cc",
  124. "generic_sensor/fake_platform_sensor_and_provider.cc",
  125. "generic_sensor/fake_platform_sensor_and_provider.h",
  126. "generic_sensor/fake_platform_sensor_fusion.cc",
  127. "generic_sensor/fake_platform_sensor_fusion.h",
  128. "generic_sensor/generic_sensor_service_unittest.cc",
  129. "generic_sensor/gravity_fusion_algorithm_using_accelerometer_unittest.cc",
  130. "generic_sensor/linear_acceleration_fusion_algorithm_using_accelerometer_unittest.cc",
  131. "generic_sensor/orientation_euler_angles_fusion_algorithm_using_quaternion_unittest.cc",
  132. "generic_sensor/orientation_quaternion_fusion_algorithm_using_euler_angles_unittest.cc",
  133. "generic_sensor/orientation_test_data.h",
  134. "generic_sensor/platform_sensor_and_provider_unittest.cc",
  135. "generic_sensor/platform_sensor_fusion_unittest.cc",
  136. "generic_sensor/platform_sensor_util_unittest.cc",
  137. "generic_sensor/relative_orientation_euler_angles_fusion_algorithm_using_accelerometer_and_gyroscope_unittest.cc",
  138. "generic_sensor/relative_orientation_euler_angles_fusion_algorithm_using_accelerometer_unittest.cc",
  139. "generic_sensor/sensor_fusion_algorithm_using_accelerometer_unittest.cc",
  140. "geolocation/geolocation_provider_impl_unittest.cc",
  141. "geolocation/geolocation_service_unittest.cc",
  142. "geolocation/location_arbitrator_unittest.cc",
  143. "geolocation/network_location_provider_unittest.cc",
  144. "geolocation/position_cache_impl_unittest.cc",
  145. "geolocation/public_ip_address_geolocator_unittest.cc",
  146. "geolocation/public_ip_address_location_notifier_unittest.cc",
  147. "geolocation/wifi_data_provider_common_unittest.cc",
  148. "geolocation/wifi_polling_policy_unittest.cc",
  149. "power_monitor/power_monitor_message_broadcaster_unittest.cc",
  150. "public/cpp/power_monitor/power_monitor_broadcast_source_unittest.cc",
  151. "vibration/vibration_manager_impl_unittest.cc",
  152. "wake_lock/wake_lock_unittest.cc",
  153. ]
  154. deps = [
  155. ":lib",
  156. ":test_support",
  157. "//base",
  158. "//base/test:test_support",
  159. "//base/third_party/dynamic_annotations",
  160. "//build:chromeos_buildflags",
  161. "//components/variations",
  162. "//device/base/synchronization",
  163. "//mojo/public/cpp/bindings",
  164. "//net",
  165. "//net:test_support",
  166. "//services/device/compute_pressure",
  167. "//services/device/generic_sensor",
  168. "//services/device/geolocation",
  169. "//services/device/geolocation:test_support",
  170. "//services/device/power_monitor",
  171. "//services/device/public/cpp:device_features",
  172. "//services/device/public/cpp/bluetooth:bluetooth_tests",
  173. "//services/device/public/cpp/power_monitor",
  174. "//services/device/public/mojom",
  175. "//services/device/wake_lock",
  176. "//services/network:test_support",
  177. "//testing/gmock",
  178. "//testing/gtest",
  179. ]
  180. if (is_android) {
  181. sources += [ "generic_sensor/platform_sensor_provider_unittest_android.cc" ]
  182. }
  183. if (is_win) {
  184. sources += [
  185. "battery/battery_status_manager_win_unittest.cc",
  186. "generic_sensor/platform_sensor_and_provider_unittest_win.cc",
  187. "geolocation/wifi_data_provider_win_unittest.cc",
  188. ]
  189. }
  190. if (is_chromeos && use_iioservice) {
  191. sources += [
  192. "generic_sensor/platform_sensor_chromeos_unittest.cc",
  193. "generic_sensor/platform_sensor_provider_chromeos_unittest.cc",
  194. ]
  195. deps += [
  196. "//chromeos/components/sensors:sensors",
  197. "//chromeos/components/sensors:test_support",
  198. ]
  199. } else if ((is_linux || is_chromeos) && use_udev) {
  200. sources +=
  201. [ "generic_sensor/platform_sensor_and_provider_unittest_linux.cc" ]
  202. }
  203. if (is_linux && use_dbus) {
  204. sources += [ "battery/battery_status_manager_linux_unittest.cc" ]
  205. deps += [ "//dbus:test_support" ]
  206. if (is_linux) {
  207. sources += [ "geolocation/wifi_data_provider_linux_unittest.cc" ]
  208. }
  209. }
  210. if (is_chromeos_ash) {
  211. sources += [
  212. "fingerprint/fingerprint_chromeos_unittest.cc",
  213. "geolocation/wifi_data_provider_chromeos_unittest.cc",
  214. ]
  215. deps += [
  216. "//chromeos/ash/components/dbus/biod:test_support",
  217. "//chromeos/ash/components/dbus/shill",
  218. "//chromeos/ash/components/network:test_support",
  219. "//services/device/bluetooth:bluetooth_system_tests",
  220. "//services/device/fingerprint",
  221. "//third_party/protobuf:protobuf_lite",
  222. ]
  223. }
  224. if (is_chromeos_lacros) {
  225. sources += [ "geolocation/wifi_data_provider_lacros_unittest.cc" ]
  226. deps += [ "//chromeos/lacros:test_support" ]
  227. }
  228. if (is_android) {
  229. sources -= [
  230. "battery/battery_status_service_unittest.cc",
  231. "geolocation/network_location_provider_unittest.cc",
  232. "geolocation/wifi_data_provider_common_unittest.cc",
  233. ]
  234. deps += [
  235. ":device_service_jni_headers",
  236. "//services/device/public/java:geolocation_java_test_support",
  237. "//services/device/usb:java",
  238. "//services/device/vibration/android:vibration_jni_headers",
  239. ]
  240. } else {
  241. sources += [
  242. "battery/battery_monitor_impl_unittest.cc",
  243. "hid/hid_device_info_unittest.cc",
  244. "hid/hid_manager_unittest.cc",
  245. "public/cpp/hid/hid_blocklist_unittest.cc",
  246. ]
  247. deps += [
  248. "//components/variations:test_support",
  249. "//services/device/battery",
  250. "//services/device/hid",
  251. "//services/device/vibration",
  252. ]
  253. if ((!is_linux && !is_chromeos) || use_udev) {
  254. sources += [
  255. "hid/hid_connection_impl_unittest.cc",
  256. "public/cpp/hid/hid_device_filter_unittest.cc",
  257. "public/cpp/hid/hid_report_descriptor_unittest.cc",
  258. ]
  259. if (is_linux || is_chromeos) {
  260. sources += [
  261. "hid/hid_service_linux_unittest.cc",
  262. "hid/input_service_linux_unittest.cc",
  263. ]
  264. }
  265. if (!is_fuchsia) {
  266. # Fuchsia does not currently implement HidService.
  267. sources += [ "hid/hid_service_unittest.cc" ]
  268. }
  269. if (!is_ios) {
  270. sources += [ "hid/hid_connection_unittest.cc" ]
  271. deps += [
  272. ":usb_test_gadget",
  273. "//net:test_support",
  274. "//services/device/usb",
  275. ]
  276. }
  277. }
  278. }
  279. if (is_linux || is_chromeos) {
  280. sources += [
  281. "compute_pressure/core_times_unittest.cc",
  282. "compute_pressure/cpu_probe_linux_unittest.cc",
  283. "compute_pressure/procfs_stat_cpu_parser_unittest.cc",
  284. ]
  285. }
  286. if (is_serial_enabled_platform) {
  287. sources += [
  288. "serial/bluetooth_serial_device_enumerator_unittests.cc",
  289. "serial/bluetooth_serial_port_impl_unittest.cc",
  290. "serial/serial_device_enumerator_unittest.cc",
  291. "serial/serial_port_impl_unittest.cc",
  292. "serial/serial_port_manager_impl_unittest.cc",
  293. ]
  294. if (is_linux || is_chromeos) {
  295. sources += [ "serial/serial_device_enumerator_linux_unittest.cc" ]
  296. }
  297. if (is_posix) {
  298. sources += [ "serial/serial_io_handler_posix_unittest.cc" ]
  299. }
  300. if (is_linux || is_chromeos) {
  301. deps += [ "//device/udev_linux:test_support" ]
  302. }
  303. deps += [
  304. "//device/bluetooth:mocks",
  305. "//services/device/public/cpp/bluetooth:bluetooth",
  306. "//services/device/public/cpp/serial:switches",
  307. "//services/device/serial",
  308. "//services/device/serial:test_support",
  309. ]
  310. }
  311. # USB does not compile on iOS.
  312. if (!is_ios) {
  313. sources += [
  314. "public/cpp/usb/usb_utils_unittest.cc",
  315. "usb/mojo/device_impl_unittest.cc",
  316. "usb/mojo/device_manager_impl_unittest.cc",
  317. "usb/usb_descriptors_unittest.cc",
  318. "usb/usb_device_handle_unittest.cc",
  319. "usb/usb_service_unittest.cc",
  320. "usb/webusb_descriptors_unittest.cc",
  321. ]
  322. deps += [
  323. ":usb_test_gadget",
  324. "//device/base",
  325. "//net:test_support",
  326. "//services/device/public/cpp:test_support",
  327. "//services/device/public/cpp/usb",
  328. "//services/device/public/mojom",
  329. "//services/device/usb",
  330. "//services/device/usb:test_support",
  331. "//services/device/usb/mojo",
  332. ]
  333. if (!is_android) {
  334. sources += [ "public/cpp/usb/usb_ids_unittest.cc" ]
  335. }
  336. }
  337. if (is_mac) {
  338. sources += [ "geolocation/core_location_provider_unittest.mm" ]
  339. }
  340. # UsbContext is a libusb-specific object.
  341. # TODO(https://crbug.com/1096743) Remove these tests.
  342. if (is_mac) {
  343. sources += [ "usb/usb_context_unittest.cc" ]
  344. deps += [ "//third_party/libusb" ]
  345. }
  346. if (is_win) {
  347. sources += [
  348. "generic_sensor/platform_sensor_provider_winrt_unittest.cc",
  349. "generic_sensor/platform_sensor_reader_winrt_unittests.cc",
  350. "geolocation/win/fake_geocoordinate_winrt.cc",
  351. "geolocation/win/fake_geocoordinate_winrt.h",
  352. "geolocation/win/fake_geolocator_winrt.cc",
  353. "geolocation/win/fake_geolocator_winrt.h",
  354. "geolocation/win/fake_geoposition_winrt.cc",
  355. "geolocation/win/fake_geoposition_winrt.h",
  356. "geolocation/win/fake_position_changed_event_args_winrt.cc",
  357. "geolocation/win/fake_position_changed_event_args_winrt.h",
  358. "geolocation/win/fake_status_changed_event_args_winrt.cc",
  359. "geolocation/win/fake_status_changed_event_args_winrt.h",
  360. "geolocation/win/location_provider_winrt_unittest.cc",
  361. "hid/hid_preparsed_data_unittest.cc",
  362. ]
  363. # Needed for "generic_sensor/platform_sensor_and_provider_unittest_win.cc"
  364. libs = [
  365. "propsys.lib",
  366. "sensorsapi.lib",
  367. ]
  368. }
  369. }
  370. source_set("test_support") {
  371. testonly = true
  372. sources = [
  373. "device_service_test_base.cc",
  374. "device_service_test_base.h",
  375. ]
  376. deps = [
  377. ":lib",
  378. "//base",
  379. "//base/test:test_support",
  380. "//mojo/public/cpp/bindings",
  381. "//net",
  382. "//net:test_support",
  383. "//services/device/public/cpp:test_support",
  384. "//services/device/public/cpp/geolocation",
  385. "//services/device/public/mojom:device_service",
  386. "//services/network:test_support",
  387. "//services/service_manager/public/cpp",
  388. "//services/service_manager/public/cpp/test:test_support",
  389. "//testing/gtest",
  390. ]
  391. }
  392. if (is_android) {
  393. generate_jni("device_service_jni_headers") {
  394. sources = [
  395. "android/java/src/org/chromium/services/device/InterfaceRegistrar.java",
  396. "public/java/src/org/chromium/device/DeviceFeatureList.java",
  397. ]
  398. }
  399. android_library("java") {
  400. # This should be visible only to embedders of the Device Service, and the
  401. # dependence should only be for the purpose of embedding the Device Service.
  402. # //content/public/android:* here actually wants to identify the
  403. # //content/public/android:content_java target and all of its generated
  404. # targets which also need to see this target as well.
  405. # //services:* identifies //services:service_unittests and all of its
  406. # generated targets.
  407. visibility = [
  408. "//content/public/android:*",
  409. "//services:*",
  410. ]
  411. sources = [
  412. "android/java/src/org/chromium/services/device/InterfaceRegistrar.java",
  413. ]
  414. deps = [
  415. "//base:jni_java",
  416. "//mojo/public/java:bindings_java",
  417. "//mojo/public/java:system_java",
  418. "//mojo/public/java/system:system_impl_java",
  419. "//services/device/battery/android:battery_monitor_java",
  420. "//services/device/generic_sensor:java",
  421. "//services/device/geolocation:geolocation_java",
  422. "//services/device/nfc/android:java",
  423. "//services/device/public/java:nfc_java",
  424. "//services/device/public/mojom:mojom_java",
  425. "//services/device/screen_orientation:java",
  426. "//services/device/time_zone_monitor:java",
  427. "//services/device/usb:java",
  428. "//services/device/vibration/android:vibration_manager_java",
  429. "//services/device/wake_lock/power_save_blocker:java",
  430. "//services/service_manager/public/java:service_manager_java",
  431. "//services/service_manager/public/mojom:mojom_java",
  432. ]
  433. }
  434. }
  435. source_set("usb_test_gadget") {
  436. testonly = true
  437. sources = [
  438. "test/usb_test_gadget.h",
  439. "test/usb_test_gadget_impl.cc",
  440. ]
  441. deps = [
  442. "//device/base",
  443. "//net:test_support",
  444. "//services/device/usb",
  445. "//tools/usb_gadget",
  446. ]
  447. }
  448. source_set("utility") {
  449. sources = []
  450. if (is_mac) {
  451. sources += [
  452. "utils/mac_utils.cc",
  453. "utils/mac_utils.h",
  454. ]
  455. }
  456. deps = [ "//base" ]
  457. }