BUILD.gn 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350
  1. # Copyright 2014 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/buildflag_header.gni")
  5. import("//build/config/chromeos/ui_mode.gni")
  6. import("//build/config/compiler/compiler.gni")
  7. import("//build/config/dcheck_always_on.gni")
  8. import("//build/config/linux/gtk/gtk.gni")
  9. import("//build/config/linux/pangocairo/pangocairo.gni")
  10. import("//build/config/locales.gni")
  11. import("//build/config/ozone.gni")
  12. import("//build/config/sanitizers/sanitizers.gni")
  13. import("//build/config/ui.gni")
  14. import("//build/util/branding.gni")
  15. import("//skia/features.gni")
  16. import("//testing/libfuzzer/fuzzer_test.gni")
  17. import("//testing/test.gni")
  18. import("//tools/grit/grit_rule.gni")
  19. import("//ui/base/ui_features.gni")
  20. import("//ui/qt/qt.gni")
  21. if (is_android) {
  22. import("//build/config/android/config.gni")
  23. import("//build/config/android/rules.gni")
  24. } else if (is_mac) {
  25. import("//build/config/mac/rules.gni")
  26. }
  27. build_ime = !is_ios
  28. # As part of building Chrome on iOS, it is necessary to run a tool on
  29. # the host to load datapack and generate output in a format defined
  30. # by the platform (this is to support notifications).
  31. #
  32. # Introduce a standalone target that can build on both 'host' and 'target'
  33. # toolchains that just builds the support to load datapacks. The dependencies
  34. # should be kept minimal to not have to build too many targets with multiple
  35. # toolchains.
  36. component("ui_data_pack") {
  37. sources = [
  38. "resource/data_pack.cc",
  39. "resource/data_pack.h",
  40. "resource/data_pack_export.h",
  41. "resource/resource_handle.h",
  42. "resource/resource_scale_factor.cc",
  43. "resource/resource_scale_factor.h",
  44. "resource/scoped_file_writer.cc",
  45. "resource/scoped_file_writer.h",
  46. ]
  47. deps = [
  48. "//base",
  49. "//net",
  50. "//third_party/zlib/google:compression_utils",
  51. ]
  52. defines = [ "UI_DATA_PACK_IMPLEMENTATION" ]
  53. if (is_chromeos) {
  54. sources += [
  55. "resource/temporary_shared_resource_path_chromeos.cc",
  56. "resource/temporary_shared_resource_path_chromeos.h",
  57. ]
  58. }
  59. if (is_chromeos_lacros) {
  60. sources += [
  61. "resource/data_pack_with_resource_sharing_lacros.cc",
  62. "resource/data_pack_with_resource_sharing_lacros.h",
  63. ]
  64. deps += [ "//components/version_info" ]
  65. }
  66. configs += [ "//build/config/compiler:wexit_time_destructors" ]
  67. }
  68. buildflag_header("buildflags") {
  69. header = "buildflags.h"
  70. flags = [
  71. "ENABLE_HIDPI=$enable_hidpi",
  72. "ENABLE_MESSAGE_CENTER=$enable_message_center",
  73. "USE_ATK=$use_atk",
  74. "USE_XKBCOMMON=$use_xkbcommon",
  75. "HAS_NATIVE_ACCESSIBILITY=$has_native_accessibility",
  76. "HAS_PLATFORM_ACCESSIBILITY_SUPPORT=$has_platform_accessibility_support",
  77. "USE_GTK=$use_gtk",
  78. "USE_QT=$use_qt",
  79. ]
  80. }
  81. source_set("hit_test") {
  82. sources = [
  83. "hit_test.cc",
  84. "hit_test.h",
  85. ]
  86. }
  87. component("base") {
  88. output_name = "ui_base"
  89. sources = [
  90. "class_property.cc",
  91. "class_property.h",
  92. "default_style.h",
  93. "device_form_factor.h",
  94. "device_form_factor_desktop.cc",
  95. "dragdrop/drop_target_event.cc",
  96. "dragdrop/drop_target_event.h",
  97. "dragdrop/os_exchange_data.cc",
  98. "dragdrop/os_exchange_data.h",
  99. "dragdrop/os_exchange_data_provider_factory.cc",
  100. "dragdrop/os_exchange_data_provider_factory.h",
  101. "ime/utf_offset.cc",
  102. "ime/utf_offset.h",
  103. "interaction/element_identifier.cc",
  104. "interaction/element_identifier.h",
  105. "interaction/element_tracker.cc",
  106. "interaction/element_tracker.h",
  107. "interaction/framework_specific_implementation.h",
  108. "interaction/interaction_sequence.cc",
  109. "interaction/interaction_sequence.h",
  110. "l10n/formatter.cc",
  111. "l10n/formatter.h",
  112. "l10n/l10n_font_util.cc",
  113. "l10n/l10n_font_util.h",
  114. "l10n/l10n_util.cc",
  115. "l10n/l10n_util.h",
  116. "l10n/l10n_util_collator.h",
  117. "l10n/time_format.cc",
  118. "l10n/time_format.h",
  119. "layout.cc",
  120. "layout.h",
  121. "models/button_menu_item_model.cc",
  122. "models/button_menu_item_model.h",
  123. "models/combobox_model.cc",
  124. "models/combobox_model.h",
  125. "models/combobox_model_observer.h",
  126. "models/dialog_model.cc",
  127. "models/dialog_model.h",
  128. "models/dialog_model_field.cc",
  129. "models/dialog_model_field.h",
  130. "models/dialog_model_host.h",
  131. "models/dialog_model_menu_model_adapter.cc",
  132. "models/dialog_model_menu_model_adapter.h",
  133. "models/image_model.cc",
  134. "models/image_model.h",
  135. "models/list_model.h",
  136. "models/list_model_observer.h",
  137. "models/list_selection_model.cc",
  138. "models/list_selection_model.h",
  139. "models/menu_model.cc",
  140. "models/menu_model.h",
  141. "models/menu_model_delegate.h",
  142. "models/menu_separator_types.h",
  143. "models/simple_combobox_model.cc",
  144. "models/simple_combobox_model.h",
  145. "models/simple_menu_model.cc",
  146. "models/simple_menu_model.h",
  147. "models/table_model.cc",
  148. "models/table_model.h",
  149. "models/table_model_observer.h",
  150. "models/tree_model.cc",
  151. "models/tree_model.h",
  152. "models/tree_node_iterator.h",
  153. "models/tree_node_model.h",
  154. "nine_image_painter_factory.cc",
  155. "nine_image_painter_factory.h",
  156. "page_transition_types.cc",
  157. "page_transition_types.h",
  158. "pointer/touch_ui_controller.cc",
  159. "pointer/touch_ui_controller.h",
  160. "resource/allowlist.h",
  161. "resource/resource_bundle.cc",
  162. "resource/resource_bundle.h",
  163. "scoped_visibility_tracker.cc",
  164. "scoped_visibility_tracker.h",
  165. "template_expressions.cc",
  166. "template_expressions.h",
  167. "theme_provider.cc",
  168. "theme_provider.h",
  169. "ui_base_exports.cc",
  170. "ui_base_paths.cc",
  171. "ui_base_paths.h",
  172. "ui_base_switches.cc",
  173. "ui_base_switches.h",
  174. "ui_base_switches_util.cc",
  175. "ui_base_switches_util.h",
  176. "view_prop.cc",
  177. "view_prop.h",
  178. "webui/i18n_source_stream.cc",
  179. "webui/i18n_source_stream.h",
  180. "webui/jstemplate_builder.cc",
  181. "webui/jstemplate_builder.h",
  182. "webui/resource_path.h",
  183. "webui/web_ui_util.cc",
  184. "webui/web_ui_util.h",
  185. "window_open_disposition.cc",
  186. "window_open_disposition.h",
  187. ]
  188. libs = []
  189. if (is_android) {
  190. sources += [
  191. "device_form_factor_android.cc",
  192. "l10n/l10n_util_android.cc",
  193. "l10n/l10n_util_android.h",
  194. "resource/resource_bundle_android.cc",
  195. "resource/resource_bundle_android.h",
  196. ]
  197. }
  198. if (is_win) {
  199. sources += [
  200. "dragdrop/drag_source_win.cc",
  201. "dragdrop/drag_source_win.h",
  202. "dragdrop/drop_target_win.cc",
  203. "dragdrop/drop_target_win.h",
  204. "dragdrop/os_exchange_data_provider_win.cc",
  205. "dragdrop/os_exchange_data_provider_win.h",
  206. "l10n/l10n_util_win.cc",
  207. "l10n/l10n_util_win.h",
  208. "resource/resource_bundle_win.cc",
  209. "resource/resource_bundle_win.h",
  210. "resource/resource_data_dll_win.cc",
  211. "resource/resource_data_dll_win.h",
  212. "win/accessibility_ids_win.h",
  213. "win/atl_module.h",
  214. "win/event_creation_utils.cc",
  215. "win/event_creation_utils.h",
  216. "win/foreground_helper.cc",
  217. "win/foreground_helper.h",
  218. "win/hidden_window.cc",
  219. "win/hidden_window.h",
  220. "win/hwnd_metrics.cc",
  221. "win/hwnd_metrics.h",
  222. "win/hwnd_subclass.cc",
  223. "win/hwnd_subclass.h",
  224. "win/internal_constants.cc",
  225. "win/internal_constants.h",
  226. "win/lock_state.cc",
  227. "win/lock_state.h",
  228. "win/message_box_win.cc",
  229. "win/message_box_win.h",
  230. "win/mouse_wheel_util.cc",
  231. "win/mouse_wheel_util.h",
  232. "win/power_setting_change_listener.cc",
  233. "win/power_setting_change_listener.h",
  234. "win/scoped_ole_initializer.cc",
  235. "win/scoped_ole_initializer.h",
  236. "win/session_change_observer.cc",
  237. "win/session_change_observer.h",
  238. "win/shell.cc",
  239. "win/shell.h",
  240. "win/touch_input.cc",
  241. "win/touch_input.h",
  242. "win/win_cursor.cc",
  243. "win/win_cursor.h",
  244. "win/win_cursor_factory.cc",
  245. "win/win_cursor_factory.h",
  246. "win/window_event_target.cc",
  247. "win/window_event_target.h",
  248. ]
  249. ldflags = [ "/DELAYLOAD:dwmapi.dll" ]
  250. libs += [
  251. "dwmapi.lib",
  252. "wtsapi32.lib",
  253. ]
  254. }
  255. if (is_mac) {
  256. sources += [
  257. "cocoa/accessibility_focus_overrider.h",
  258. "cocoa/accessibility_focus_overrider.mm",
  259. "cocoa/animation_utils.h",
  260. "cocoa/appkit_utils.h",
  261. "cocoa/appkit_utils.mm",
  262. "cocoa/base_view.h",
  263. "cocoa/base_view.mm",
  264. "cocoa/cocoa_base_utils.h",
  265. "cocoa/cocoa_base_utils.mm",
  266. "cocoa/command_dispatcher.h",
  267. "cocoa/command_dispatcher.mm",
  268. "cocoa/constrained_window/constrained_window_animation.h",
  269. "cocoa/constrained_window/constrained_window_animation.mm",
  270. "cocoa/cursor_utils.h",
  271. "cocoa/cursor_utils.mm",
  272. "cocoa/defaults_utils.h",
  273. "cocoa/defaults_utils.mm",
  274. "cocoa/find_pasteboard.h",
  275. "cocoa/find_pasteboard.mm",
  276. "cocoa/flipped_view.h",
  277. "cocoa/flipped_view.mm",
  278. "cocoa/menu_controller.h",
  279. "cocoa/menu_controller.mm",
  280. "cocoa/nsmenu_additions.h",
  281. "cocoa/nsmenu_additions.mm",
  282. "cocoa/nsmenuitem_additions.h",
  283. "cocoa/nsmenuitem_additions.mm",
  284. "cocoa/nswindow_test_util.cc",
  285. "cocoa/nswindow_test_util.h",
  286. "cocoa/permissions_utils.h",
  287. "cocoa/permissions_utils.mm",
  288. "cocoa/quartz_util.h",
  289. "cocoa/quartz_util.mm",
  290. "cocoa/remote_accessibility_api.h",
  291. "cocoa/remote_accessibility_api.mm",
  292. "cocoa/remote_layer_api.h",
  293. "cocoa/remote_layer_api.mm",
  294. "cocoa/secure_password_input.h",
  295. "cocoa/secure_password_input.mm",
  296. "cocoa/text_services_context_menu.h",
  297. "cocoa/text_services_context_menu.mm",
  298. "cocoa/tool_tip_base_view.h",
  299. "cocoa/tool_tip_base_view.mm",
  300. "cocoa/touch_bar_util.h",
  301. "cocoa/touch_bar_util.mm",
  302. "cocoa/tracking_area.h",
  303. "cocoa/tracking_area.mm",
  304. "cocoa/underlay_opengl_hosting_window.h",
  305. "cocoa/underlay_opengl_hosting_window.mm",
  306. "cocoa/user_interface_item_command_handler.h",
  307. "cocoa/views_hostable.h",
  308. "cocoa/weak_ptr_nsobject.h",
  309. "cocoa/weak_ptr_nsobject.mm",
  310. "cocoa/window_size_constants.h",
  311. "cocoa/window_size_constants.mm",
  312. "dragdrop/os_exchange_data_provider_builder_mac.h",
  313. "dragdrop/os_exchange_data_provider_builder_mac.mm",
  314. "dragdrop/os_exchange_data_provider_mac.h",
  315. "dragdrop/os_exchange_data_provider_mac.mm",
  316. "interaction/element_tracker_mac.h",
  317. "interaction/element_tracker_mac.mm",
  318. "l10n/l10n_util_mac.h",
  319. "l10n/l10n_util_mac.mm",
  320. "resource/resource_bundle_mac.mm",
  321. ]
  322. }
  323. if (is_chromeos_lacros) {
  324. sources += [ "resource/resource_bundle_lacros.cc" ]
  325. }
  326. if (is_ios) {
  327. sources += [
  328. "device_form_factor_ios.mm",
  329. "resource/resource_bundle_ios.mm",
  330. ]
  331. }
  332. if (!is_ios) {
  333. sources += [
  334. "accelerators/accelerator.cc",
  335. "accelerators/accelerator.h",
  336. "accelerators/accelerator_manager.cc",
  337. "accelerators/accelerator_manager.h",
  338. "accelerators/accelerator_map.h",
  339. "accelerators/media_keys_listener.cc",
  340. "accelerators/media_keys_listener.h",
  341. "accelerators/media_keys_util.cc",
  342. "accelerators/media_keys_util.h",
  343. "accelerators/menu_label_accelerator_util.cc",
  344. "accelerators/menu_label_accelerator_util.h",
  345. "base_window.cc",
  346. "base_window.h",
  347. "emoji/emoji_panel_helper.h",
  348. "pointer/pointer_device.h",
  349. "pointer/pointer_device_util.cc",
  350. "pointer/touch_editing_controller.cc",
  351. "pointer/touch_editing_controller.h",
  352. "text/bytes_formatting.cc",
  353. "text/bytes_formatting.h",
  354. "themed_vector_icon.cc",
  355. "themed_vector_icon.h",
  356. "ui_base_types.cc",
  357. "ui_base_types.h",
  358. "user_activity/user_activity_detector.cc",
  359. "user_activity/user_activity_detector.h",
  360. "user_activity/user_activity_observer.h",
  361. ]
  362. if (is_linux || is_chromeos) {
  363. sources += [
  364. "accelerators/menu_label_accelerator_util_linux.cc",
  365. "accelerators/menu_label_accelerator_util_linux.h",
  366. "linux/linux_desktop.cc",
  367. "linux/linux_desktop.h",
  368. ]
  369. }
  370. if (is_mac) {
  371. sources += [
  372. "accelerators/platform_accelerator_cocoa.h",
  373. "accelerators/platform_accelerator_cocoa.mm",
  374. "cocoa/bubble_closer.h",
  375. "cocoa/bubble_closer.mm",
  376. "dragdrop/cocoa_dnd_util.h",
  377. "dragdrop/cocoa_dnd_util.mm",
  378. ]
  379. }
  380. }
  381. if (is_mac) {
  382. sources += [ "emoji/emoji_panel_helper_mac.mm" ]
  383. } else if (is_win) {
  384. sources += [ "emoji/emoji_panel_helper_win.cc" ]
  385. } else if (is_chromeos_ash) {
  386. sources += [ "emoji/emoji_panel_helper_chromeos.cc" ]
  387. } else {
  388. # Empty implementation for all other platforms.
  389. sources += [ "emoji/emoji_panel_helper.cc" ]
  390. }
  391. if (is_mac) {
  392. sources += [ "accelerators/media_keys_listener_mac.mm" ]
  393. } else if (is_win) {
  394. sources += [
  395. "accelerators/global_media_keys_listener_win.cc",
  396. "accelerators/global_media_keys_listener_win.h",
  397. "accelerators/media_keys_listener_win.cc",
  398. ]
  399. } else {
  400. sources += [ "accelerators/media_keys_listener_stub.cc" ]
  401. }
  402. if (is_win) {
  403. sources += [ "pointer/pointer_device_win.cc" ]
  404. } else if (is_android) {
  405. sources += [ "pointer/pointer_device_android.cc" ]
  406. } else if (is_ios) {
  407. sources += [ "pointer/pointer_device_ios.cc" ]
  408. } else if (is_linux || is_chromeos) {
  409. sources += [ "pointer/pointer_device_linux.cc" ]
  410. } else {
  411. # Empty implementation for all other cases.
  412. sources += [ "pointer/pointer_device.cc" ]
  413. sources -= [ "pointer/pointer_device_util.cc" ]
  414. }
  415. if (is_fuchsia) {
  416. sources += [ "resource/resource_bundle_fuchsia.cc" ]
  417. }
  418. configs += [ "//build/config/compiler:wexit_time_destructors" ]
  419. defines = [ "IS_UI_BASE_IMPL" ]
  420. if (enable_pseudolocales) {
  421. defines += [ "ENABLE_PSEUDOLOCALES" ]
  422. }
  423. public_deps = [
  424. ":buildflags",
  425. ":features",
  426. ":hit_test",
  427. ":ui_data_pack",
  428. "//base",
  429. "//skia",
  430. "//third_party/abseil-cpp:absl",
  431. "//ui/color:color_headers",
  432. "//ui/gfx",
  433. "//ui/gfx/geometry",
  434. ]
  435. deps = [
  436. ":locales_list",
  437. "//base",
  438. "//base:base_static",
  439. "//base:i18n",
  440. "//base/third_party/dynamic_annotations",
  441. "//build:chromeos_buildflags",
  442. "//net",
  443. "//third_party/brotli:dec",
  444. "//third_party/icu",
  445. "//third_party/modp_b64",
  446. "//third_party/zlib:zlib",
  447. "//third_party/zlib/google:compression_utils",
  448. "//ui/base:data_exchange",
  449. "//ui/base/clipboard:clipboard_types",
  450. "//ui/base/dragdrop/mojom",
  451. "//ui/color",
  452. "//ui/display",
  453. "//ui/display/util:gpu_info_util",
  454. "//ui/events",
  455. "//ui/events/devices",
  456. "//ui/resources:webui_generated_resources_grd",
  457. "//ui/strings",
  458. "//url",
  459. ]
  460. if (is_debug || dcheck_always_on) {
  461. deps += [ "//third_party/re2" ]
  462. }
  463. if (!is_ios) {
  464. # iOS does not use Chromium-specific code for event handling.
  465. public_deps += [
  466. "//ui/base/clipboard:file_info",
  467. "//ui/events:dom_keycode_converter",
  468. "//ui/events:events_base",
  469. "//ui/events/platform",
  470. ]
  471. }
  472. if (is_ios) {
  473. sources += [
  474. "l10n/l10n_util_mac.h",
  475. "l10n/l10n_util_mac.mm",
  476. "l10n/l10n_util_mac_bridge.h",
  477. "l10n/l10n_util_mac_bridge.mm",
  478. ]
  479. public_deps += [ "//ui/events:event_constants" ]
  480. deps -= [
  481. "//ui/events",
  482. "//ui/events/devices",
  483. ]
  484. }
  485. if (is_win) {
  486. public_deps += [
  487. "//ui/base/cursor",
  488. "//ui/base/cursor/mojom:cursor_type_shared",
  489. ]
  490. deps += [ "//ui/resources:ui_unscaled_resources_grd" ]
  491. }
  492. if (is_mac) {
  493. public_deps += [ "//ui/base/cursor" ]
  494. deps += [ "//ui/resources:ui_resources_grd" ]
  495. }
  496. if (toolkit_views) {
  497. deps += [ "//ui/events" ]
  498. }
  499. if (use_aura && (is_linux || is_chromeos)) {
  500. sources += [ "resource/resource_bundle_auralinux.cc" ]
  501. }
  502. if (is_linux || is_chromeos) {
  503. deps += [ "//third_party/fontconfig" ]
  504. }
  505. if (is_chromeos_lacros) {
  506. deps += [
  507. "//chromeos/crosapi/cpp:crosapi_constants",
  508. "//chromeos/lacros:lacros_paths",
  509. ]
  510. }
  511. if (use_glib) {
  512. configs += [ "//build/config/linux:glib" ]
  513. sources += [
  514. "glib/glib_cast.h",
  515. "glib/glib_integers.h",
  516. "glib/glib_signal.h",
  517. "glib/scoped_gobject.h",
  518. ]
  519. }
  520. if (is_chromeos_ash || (use_aura && (is_linux || is_chromeos_lacros)) ||
  521. is_fuchsia) {
  522. sources += [
  523. "dragdrop/os_exchange_data_provider_non_backed.cc",
  524. "dragdrop/os_exchange_data_provider_non_backed.h",
  525. ]
  526. }
  527. if (is_mac || is_win) {
  528. deps += [ "//ui/base/clipboard" ]
  529. }
  530. if (!use_aura) {
  531. sources -= [
  532. "view_prop.cc",
  533. "view_prop.h",
  534. ]
  535. }
  536. if (is_mac) {
  537. deps += [ "//third_party/mozilla" ]
  538. frameworks = [
  539. "Accelerate.framework",
  540. "AppKit.framework",
  541. "QuartzCore.framework",
  542. "AudioUnit.framework",
  543. "Carbon.framework",
  544. "CoreVideo.framework",
  545. "Foundation.framework",
  546. ]
  547. }
  548. if (!toolkit_views && !use_aura) {
  549. sources -= [
  550. "dragdrop/drop_target_event.cc",
  551. "dragdrop/drop_target_event.h",
  552. "dragdrop/os_exchange_data.cc",
  553. "dragdrop/os_exchange_data.h",
  554. "dragdrop/os_exchange_data_provider_factory.cc",
  555. "dragdrop/os_exchange_data_provider_factory.h",
  556. "nine_image_painter_factory.cc",
  557. "nine_image_painter_factory.h",
  558. ]
  559. }
  560. if (is_android) {
  561. deps += [ ":ui_base_jni_headers" ]
  562. libs += [ "jnigraphics" ]
  563. sources -= [
  564. "l10n/l10n_font_util.cc",
  565. "models/button_menu_item_model.cc",
  566. "pointer/touch_editing_controller.cc",
  567. "theme_provider.cc",
  568. "ui_base_types.cc",
  569. ]
  570. }
  571. if (is_android || is_ios) {
  572. sources -= [ "device_form_factor_desktop.cc" ]
  573. }
  574. }
  575. component("data_exchange") {
  576. defines = [ "IS_UI_BASE_DATA_EXCHANGE_IMPL" ]
  577. sources = [
  578. "dragdrop/download_file_info.cc",
  579. "dragdrop/download_file_info.h",
  580. "dragdrop/download_file_interface.h",
  581. "dragdrop/os_exchange_data_provider.h",
  582. "dragdrop/os_exchange_data_provider_factory_ozone.cc",
  583. "dragdrop/os_exchange_data_provider_factory_ozone.h",
  584. ]
  585. deps = [
  586. "//base",
  587. "//ui/base/clipboard:clipboard_types",
  588. "//ui/base/clipboard:file_info",
  589. "//ui/gfx",
  590. "//ui/gfx/geometry",
  591. "//url",
  592. ]
  593. public_deps = [ "//ui/base/data_transfer_policy" ]
  594. }
  595. component("features") {
  596. output_name = "ui_base_features"
  597. defines = [ "IS_UI_BASE_FEATURES_IMPL" ]
  598. sources = [
  599. "ui_base_features.cc",
  600. "ui_base_features.h",
  601. ]
  602. if (is_chromeos_ash) {
  603. sources += [
  604. "shortcut_mapping_pref_delegate.cc",
  605. "shortcut_mapping_pref_delegate.h",
  606. ]
  607. }
  608. deps = [
  609. ":buildflags",
  610. "//base",
  611. "//build:chromeos_buildflags",
  612. ]
  613. if (is_android) {
  614. sources += [ "ui_base_feature_list_android.cc" ]
  615. deps += [ ":ui_base_jni_headers" ]
  616. }
  617. }
  618. if (is_win || is_mac || is_linux || is_chromeos) {
  619. static_library("pixel_diff_test_support") {
  620. testonly = true
  621. sources = [
  622. "test/skia_gold_matching_algorithm.cc",
  623. "test/skia_gold_matching_algorithm.h",
  624. "test/skia_gold_pixel_diff.cc",
  625. "test/skia_gold_pixel_diff.h",
  626. ]
  627. deps = [
  628. "//base",
  629. "//base/test:test_config",
  630. "//build:chromeos_buildflags",
  631. "//testing/gtest",
  632. "//ui/gfx",
  633. "//ui/snapshot",
  634. ]
  635. if (!is_fuchsia) {
  636. data_deps = [ ":goldctl" ]
  637. }
  638. }
  639. }
  640. if (!is_ios) {
  641. group("goldctl") {
  642. data = []
  643. # Because this links to a CIPD dependency, which is a symlink on Unix
  644. # platforms, refer to the actual executable rather than the whole directory;
  645. # copying the whole directory doesn't work, at least with "mb.py zip".
  646. if (is_win) {
  647. data += [ "//tools/skia_goldctl/win/goldctl.exe" ]
  648. } else if (is_mac) {
  649. data += [
  650. "//tools/skia_goldctl/mac_amd64/goldctl",
  651. "//tools/skia_goldctl/mac_arm64/goldctl",
  652. ]
  653. } else {
  654. data += [ "//tools/skia_goldctl/linux/goldctl" ]
  655. }
  656. }
  657. }
  658. static_library("test_support") {
  659. testonly = true
  660. sources = [
  661. "interaction/element_test_util.cc",
  662. "interaction/element_test_util.h",
  663. "interaction/expect_call_in_scope.h",
  664. "interaction/interaction_test_util.cc",
  665. "interaction/interaction_test_util.h",
  666. "resource/mock_resource_bundle_delegate.cc",
  667. "resource/mock_resource_bundle_delegate.h",
  668. "test/idle_test_utils.cc",
  669. "test/idle_test_utils.h",
  670. ]
  671. if (is_mac) {
  672. sources += [
  673. "interaction/interaction_test_util_mac.h",
  674. "interaction/interaction_test_util_mac.mm",
  675. "test/cocoa_helper.h",
  676. "test/cocoa_helper.mm",
  677. "test/menu_test_observer.h",
  678. "test/menu_test_observer.mm",
  679. "test/ns_ax_tree_validator.h",
  680. "test/ns_ax_tree_validator.mm",
  681. "test/scoped_fake_full_keyboard_access.h",
  682. "test/scoped_fake_full_keyboard_access.mm",
  683. "test/scoped_fake_nswindow_focus.h",
  684. "test/scoped_fake_nswindow_focus.mm",
  685. "test/scoped_fake_nswindow_fullscreen.h",
  686. "test/scoped_fake_nswindow_fullscreen.mm",
  687. "test/scoped_preferred_scroller_style_mac.h",
  688. "test/scoped_preferred_scroller_style_mac.mm",
  689. "test/ui_controls_mac.mm",
  690. "test/view_tree_validator.mm",
  691. "test/windowed_nsnotification_observer.h",
  692. "test/windowed_nsnotification_observer.mm",
  693. ]
  694. }
  695. if (is_win) {
  696. sources += [
  697. "test/ui_controls_internal_win.cc",
  698. "test/ui_controls_internal_win.h",
  699. ]
  700. }
  701. if (!is_ios) {
  702. sources += [
  703. "accelerators/test_accelerator_target.cc",
  704. "accelerators/test_accelerator_target.h",
  705. "test/mock_base_window.cc",
  706. "test/mock_base_window.h",
  707. "test/test_dialog_model_host.cc",
  708. "test/test_dialog_model_host.h",
  709. "test/ui_controls.h",
  710. "test/view_tree_validator.h",
  711. ]
  712. } else {
  713. sources += [
  714. "test/ios/keyboard_appearance_listener.h",
  715. "test/ios/keyboard_appearance_listener.mm",
  716. "test/ios/ui_image_test_utils.h",
  717. "test/ios/ui_image_test_utils.mm",
  718. ]
  719. }
  720. if (use_aura) {
  721. sources += [
  722. "test/ui_controls_aura.cc",
  723. "test/ui_controls_aura.h",
  724. ]
  725. }
  726. public_deps = [
  727. ":base",
  728. "//ui/base/idle",
  729. ]
  730. deps = [
  731. "//base",
  732. "//base/test:test_config",
  733. "//base/test:test_support",
  734. "//build:chromeos_buildflags",
  735. "//skia",
  736. "//testing/gmock",
  737. "//testing/gtest",
  738. "//ui/base:ui_data_pack",
  739. "//ui/display:test_support",
  740. "//ui/events:events_base",
  741. "//ui/events:test_support",
  742. "//ui/gfx",
  743. "//ui/gfx/geometry",
  744. ]
  745. if (is_ios) {
  746. deps -= [
  747. "//ui/events:events_base",
  748. "//ui/events:test_support",
  749. ]
  750. }
  751. if (build_ime) {
  752. sources += [
  753. "ime/dummy_input_method.cc",
  754. "ime/dummy_input_method.h",
  755. "ime/dummy_text_input_client.cc",
  756. "ime/dummy_text_input_client.h",
  757. "ime/fake_text_input_client.cc",
  758. "ime/fake_text_input_client.h",
  759. ]
  760. deps += [
  761. "//ui/base/ime",
  762. "//ui/events",
  763. ]
  764. if (is_win) {
  765. deps += [ "//ui/base/ime/win" ]
  766. }
  767. }
  768. if (is_chromeos_ash) {
  769. sources += [
  770. "ime/ash/mock_component_extension_ime_manager.cc",
  771. "ime/ash/mock_component_extension_ime_manager.h",
  772. "ime/ash/mock_component_extension_ime_manager_delegate.cc",
  773. "ime/ash/mock_component_extension_ime_manager_delegate.h",
  774. "ime/ash/mock_ime_candidate_window_handler.cc",
  775. "ime/ash/mock_ime_candidate_window_handler.h",
  776. "ime/ash/mock_ime_engine_handler.cc",
  777. "ime/ash/mock_ime_engine_handler.h",
  778. "ime/ash/mock_ime_input_context_handler.cc",
  779. "ime/ash/mock_ime_input_context_handler.h",
  780. "ime/ash/mock_input_method_manager.cc",
  781. "ime/ash/mock_input_method_manager.h",
  782. ]
  783. deps += [
  784. "//ui/base/ime/ash",
  785. "//ui/base/ime/ash:typing_session_manager",
  786. ]
  787. }
  788. }
  789. if (is_android) {
  790. generate_jni("ui_base_jni_headers") {
  791. sources = [
  792. "../android/java/src/org/chromium/ui/base/Clipboard.java",
  793. "../android/java/src/org/chromium/ui/base/DeviceFormFactor.java",
  794. "../android/java/src/org/chromium/ui/base/IdleDetector.java",
  795. "../android/java/src/org/chromium/ui/base/LocalizationUtils.java",
  796. "../android/java/src/org/chromium/ui/base/ResourceBundle.java",
  797. "../android/java/src/org/chromium/ui/base/SelectFileDialog.java",
  798. "../android/java/src/org/chromium/ui/base/TouchDevice.java",
  799. "../android/java/src/org/chromium/ui/base/UiBaseFeatureList.java",
  800. ]
  801. }
  802. java_cpp_features("java_features_srcjar") {
  803. # External code should depend on ":features_java" instead.
  804. visibility = [ ":*" ]
  805. sources = [ "ui_base_features.cc" ]
  806. template =
  807. "../android/java/src/org/chromium/ui/base/UiBaseFeatures.java.tmpl"
  808. }
  809. android_library("features_java") {
  810. srcjar_deps = [ ":java_features_srcjar" ]
  811. }
  812. android_library("feature_list_java") {
  813. sources =
  814. [ "../android/java/src/org/chromium/ui/base/UiBaseFeatureList.java" ]
  815. deps = [
  816. "//base:base_java",
  817. "//base:jni_java",
  818. "//build/android:build_java",
  819. ]
  820. annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
  821. }
  822. }
  823. bundle_data("ui_base_unittests_bundle_data") {
  824. testonly = true
  825. sources = [ "test/data/data_pack_unittest/truncated-header.pak" ]
  826. outputs = [ "{{bundle_resources_dir}}/" +
  827. "{{source_root_relative_dir}}/{{source_file_part}}" ]
  828. }
  829. # The resource labels below should not end with "_resources" or the Android
  830. # build rules will look for a nonexistent __build_config label.
  831. grit("ui_base_test_resources_grit") {
  832. testonly = true
  833. source = "test/ui_base_test_resources.grd"
  834. outputs = [
  835. "grit/ui_base_test_resources.h",
  836. "ui_base_test_resources.pak",
  837. ]
  838. }
  839. copy("ui_base_test_resources_pak") {
  840. testonly = true
  841. sources = [ "$target_gen_dir/ui_base_test_resources.pak" ]
  842. outputs = [ "$root_out_dir/ui_base_test_resources.pak" ]
  843. public_deps = [ ":ui_base_test_resources_grit" ]
  844. }
  845. if (is_android) {
  846. android_assets("ui_base_test_android_assets") {
  847. testonly = true
  848. # Use $target_gen_dir so the associated .pak.info file is available.
  849. sources = [ "$target_gen_dir/ui_base_test_resources.pak" ]
  850. deps = [ ":ui_base_test_resources_grit" ]
  851. }
  852. }
  853. if (is_ios) {
  854. bundle_data("ui_base_test_bundle_data") {
  855. testonly = true
  856. public_deps = [ ":ui_base_test_resources_grit" ]
  857. sources = [ "$target_gen_dir/ui_base_test_resources.pak" ]
  858. outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
  859. }
  860. }
  861. test("ui_base_unittests") {
  862. use_xvfb = use_xvfb_in_this_config
  863. sources = [
  864. "class_property_unittest.cc",
  865. "clipboard/file_info_unittest.cc",
  866. "ime/utf_offset_unittest.cc",
  867. "interaction/element_identifier_unittest.cc",
  868. "interaction/element_tracker_unittest.cc",
  869. "interaction/framework_specific_implementation_unittest.cc",
  870. "interaction/interaction_sequence_unittest.cc",
  871. "interaction/interaction_test_util_unittest.cc",
  872. "l10n/l10n_util_unittest.cc",
  873. "l10n/time_format_unittest.cc",
  874. "layout_unittest.cc",
  875. "models/image_model_unittest.cc",
  876. "models/simple_combobox_model_unittest.cc",
  877. "models/simple_menu_model_unittest.cc",
  878. "models/tree_node_iterator_unittest.cc",
  879. "pointer/touch_ui_controller_unittest.cc",
  880. "prediction/empty_filter_unittests.cc",
  881. "prediction/input_filter_unittest_helpers.cc",
  882. "prediction/input_filter_unittest_helpers.h",
  883. "prediction/input_predictor_unittest_helpers.cc",
  884. "prediction/input_predictor_unittest_helpers.h",
  885. "prediction/kalman_predictor_unittest.cc",
  886. "prediction/least_squares_predictor_unittest.cc",
  887. "prediction/linear_predictor_unittest.cc",
  888. "prediction/linear_resampling_unittest.cc",
  889. "prediction/one_euro_filter_unittests.cc",
  890. "prediction/prediction_metrics_handler_unittest.cc",
  891. "prediction/prediction_unittest_helpers.h",
  892. "resource/data_pack_literal.cc",
  893. "resource/data_pack_literal.h",
  894. "resource/data_pack_unittest.cc",
  895. "resource/resource_bundle_unittest.cc",
  896. "resource/scale_factor_unittest.cc",
  897. "scoped_visibility_tracker_unittest.cc",
  898. "template_expressions_unittest.cc",
  899. "test/page_transition_types_unittest.cc",
  900. "test/run_all_unittests.cc",
  901. "webui/i18n_source_stream_unittest.cc",
  902. ]
  903. if (is_mac) {
  904. sources += [
  905. "cocoa/defaults_utils_unittest.mm",
  906. "cocoa/nsmenu_additions_unittest.mm",
  907. "cocoa/nsmenuitem_additions_unittest.mm",
  908. "interaction/element_tracker_mac_unittest.mm",
  909. "l10n/l10n_util_mac_unittest.mm",
  910. ]
  911. }
  912. if (is_chromeos_lacros) {
  913. sources += [ "resource/data_pack_with_resource_sharing_lacros_unittest.cc" ]
  914. }
  915. if (!is_ios) {
  916. sources += [
  917. "themed_vector_icon_unittest.cc",
  918. "user_activity/user_activity_detector_unittest.cc",
  919. ]
  920. if (is_mac) {
  921. sources += [ "test/view_tree_validator_unittest.mm" ]
  922. }
  923. }
  924. data = []
  925. data_deps = [ "//testing/buildbot/filters:ui_base_unittests_filters" ]
  926. deps = [
  927. ":ui_base_test_resources_grit",
  928. ":ui_base_unittests_bundle_data",
  929. "//base",
  930. "//base/test:test_support",
  931. "//build:chromeos_buildflags",
  932. "//components/vector_icons",
  933. "//mojo/core/embedder",
  934. "//net",
  935. "//net:test_support",
  936. "//skia",
  937. "//testing/gmock",
  938. "//testing/gtest",
  939. "//third_party/brotli:dec",
  940. "//third_party/icu",
  941. "//third_party/zlib/google:compression_utils",
  942. "//ui/base",
  943. "//ui/base:data_exchange",
  944. "//ui/base:test_support",
  945. "//ui/base:ui_data_pack",
  946. "//ui/base/clipboard:clipboard_test",
  947. "//ui/base/clipboard:clipboard_types",
  948. "//ui/base/clipboard:file_info",
  949. "//ui/base/cursor:unittests",
  950. "//ui/base/data_transfer_policy:unittests",
  951. "//ui/base/metadata:metadata_tests",
  952. "//ui/base/prediction:prediction",
  953. "//ui/color",
  954. "//ui/display",
  955. "//ui/events:events_base",
  956. "//ui/events:test_support",
  957. "//ui/gfx:test_support",
  958. "//ui/resources",
  959. "//ui/resources:ui_test_pak",
  960. "//ui/strings",
  961. "//url",
  962. ]
  963. if (is_android) {
  964. sources -= [ "user_activity/user_activity_detector_unittest.cc" ]
  965. }
  966. if (is_ios) {
  967. sources += [
  968. "l10n/l10n_util_mac_unittest.mm",
  969. "test/ios/ui_image_test_utils_unittest.mm",
  970. ]
  971. deps -= [
  972. "//ui/events:events_base",
  973. "//ui/events:test_support",
  974. ]
  975. } else { # !is_ios
  976. sources += [
  977. "accelerators/accelerator_manager_unittest.cc",
  978. "accelerators/accelerator_map_unittest.cc",
  979. "accelerators/accelerator_unittest.cc",
  980. "accelerators/menu_label_accelerator_util_unittest.cc",
  981. "models/dialog_model_unittest.cc",
  982. "models/list_model_unittest.cc",
  983. "models/list_selection_model_unittest.cc",
  984. "models/tree_node_model_unittest.cc",
  985. "text/bytes_formatting_unittest.cc",
  986. "webui/web_ui_util_unittest.cc",
  987. ]
  988. if (is_linux || is_chromeos) {
  989. sources +=
  990. [ "accelerators/menu_label_accelerator_util_linux_unittest.cc" ]
  991. }
  992. if (is_mac) {
  993. sources += [
  994. "accelerators/platform_accelerator_cocoa_unittest.mm",
  995. "cocoa/base_view_unittest.mm",
  996. "cocoa/bubble_closer_unittest.mm",
  997. "cocoa/cocoa_base_utils_unittest.mm",
  998. "cocoa/constrained_window/constrained_window_animation_unittest.mm",
  999. "cocoa/menu_controller_unittest.mm",
  1000. "cocoa/touch_bar_util_unittest.mm",
  1001. "cocoa/tracking_area_unittest.mm",
  1002. "cocoa/weak_ptr_nsobject_unittest.mm",
  1003. ]
  1004. }
  1005. }
  1006. # TODO(crbug.com/1091985): Support CrOS.
  1007. if (is_win || is_mac || is_linux || is_chromeos_lacros) {
  1008. sources += [
  1009. "test/skia_gold_matching_algorithm_unittest.cc",
  1010. "test/skia_gold_pixel_diff_unittest.cc",
  1011. ]
  1012. deps += [ ":pixel_diff_test_support" ]
  1013. }
  1014. if (build_ime) {
  1015. sources += [
  1016. "ime/candidate_window_unittest.cc",
  1017. "ime/composition_text_unittest.cc",
  1018. "ime/input_method_base_unittest.cc",
  1019. "ime/mojom/ime_mojom_traits_unittest.cc",
  1020. ]
  1021. if (is_win) {
  1022. sources += [
  1023. "ime/win/imm32_manager_unittest.cc",
  1024. "ime/win/on_screen_keyboard_display_manager_unittest.cc",
  1025. "ime/win/tsf_input_scope_unittest.cc",
  1026. "ime/win/tsf_text_store_unittest.cc",
  1027. ]
  1028. deps += [ "//ui/base/ime/win" ]
  1029. }
  1030. if (is_chromeos_ash) {
  1031. sources += [
  1032. "dragdrop/os_exchange_data_provider_non_backed_unittest.cc",
  1033. "ime/ash/extension_ime_util_unittest.cc",
  1034. "ime/ash/ime_keyboard_unittest.cc",
  1035. "ime/ash/input_method_ash_unittest.cc",
  1036. "ime/ash/input_method_descriptor_unittest.cc",
  1037. "ime/ash/input_method_util_unittest.cc",
  1038. "ime/ash/typing_session_manager_unittest.cc",
  1039. ]
  1040. deps += [
  1041. "//build:branding_buildflags",
  1042. "//ui/base/ime/ash",
  1043. "//ui/base/ime/ash:typing_session_manager",
  1044. ]
  1045. }
  1046. if ((is_linux || is_chromeos_lacros) && use_aura) {
  1047. sources += [
  1048. "dragdrop/os_exchange_data_provider_non_backed_unittest.cc",
  1049. "ime/input_method_minimal_unittest.cc",
  1050. "ime/linux/input_method_auralinux_unittest.cc",
  1051. ]
  1052. deps += [
  1053. "//ui/base/ime/init",
  1054. "//ui/base/ime/linux",
  1055. ]
  1056. }
  1057. if (is_linux && !is_castos) {
  1058. sources += [ "ime/linux/composition_text_util_pango_unittest.cc" ]
  1059. }
  1060. if (is_chromeos_ash || use_ozone) {
  1061. sources += [ "ime/character_composer_unittest.cc" ]
  1062. }
  1063. }
  1064. # Include the correct ui_base_test resources per platform.
  1065. if (is_android) {
  1066. deps += [ ":ui_base_test_android_assets" ]
  1067. data_deps += [ ":ui_base_test_resources_pak" ]
  1068. } else if (is_ios) {
  1069. deps += [ ":ui_base_test_bundle_data" ]
  1070. } else {
  1071. data += [ "$root_out_dir/ui_base_test_resources.pak" ]
  1072. data_deps += [ ":ui_base_test_resources_pak" ]
  1073. }
  1074. if (build_ime) {
  1075. deps += [
  1076. "//ui/base/ime",
  1077. "//ui/base/ime/mojom:test_interfaces",
  1078. ]
  1079. }
  1080. if (is_ios) {
  1081. deps += [ "//ui/resources:ui_test_pak_bundle_data" ]
  1082. } else {
  1083. deps += [
  1084. "//ui/base/accelerators/mojom:unittests",
  1085. "//ui/base/cursor/mojom:unittests",
  1086. ]
  1087. }
  1088. if (is_win) {
  1089. sources += [
  1090. "dragdrop/os_exchange_data_win_unittest.cc",
  1091. "view_prop_unittest.cc",
  1092. "win/hwnd_subclass_unittest.cc",
  1093. "win/win_cursor_factory_unittest.cc",
  1094. ]
  1095. deps += [
  1096. "//ui/base/cursor",
  1097. "//ui/base/cursor/mojom:cursor_type_shared",
  1098. ]
  1099. }
  1100. if (is_android) {
  1101. deps += [
  1102. "//chrome:resources",
  1103. "//ui/android:ui_java",
  1104. ]
  1105. }
  1106. if (use_pangocairo) {
  1107. configs += [ "//build/config/linux/pangocairo" ]
  1108. }
  1109. if (is_mac) {
  1110. deps += [
  1111. ":ui_unittests_framework",
  1112. "//third_party/mozilla",
  1113. ]
  1114. }
  1115. if (use_aura || toolkit_views) {
  1116. sources += [ "dragdrop/os_exchange_data_unittest.cc" ]
  1117. deps += [
  1118. "//ui/events",
  1119. "//ui/events/platform",
  1120. ]
  1121. }
  1122. if (is_chromeos_ash) {
  1123. deps += [ "//ui/events:dom_keycode_converter" ]
  1124. }
  1125. if (is_android || is_linux || is_chromeos || is_mac || is_win || is_fuchsia) {
  1126. # TODO(brettw): We should be able to depend on //ui/resources:ui_test_pak
  1127. # instead of depending directly on the non-test .pak files, but depending
  1128. # on ui_test_pak seems to have no effect.
  1129. data += [
  1130. "test/data/data_pack_unittest/truncated-header.pak",
  1131. "$root_out_dir/ui_test.pak", # TODO(brettw): remove this line.
  1132. ]
  1133. data_deps += [
  1134. "//third_party/mesa_headers",
  1135. "//ui/resources:ui_test_pak", # TODO(brettw): this does nothing.
  1136. ]
  1137. }
  1138. if (is_linux || is_chromeos || is_win || is_fuchsia) {
  1139. data += [
  1140. # TODO(brettw): Remove these two lines.
  1141. "$root_out_dir/ui/en-US.pak",
  1142. "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
  1143. ]
  1144. }
  1145. if (is_mac) {
  1146. data += [ "$root_out_dir/ui_unittests Framework.framework/" ]
  1147. }
  1148. if (skia_support_skottie && !is_ios) {
  1149. sources += [ "//ui/lottie/animation_unittest.cc" ]
  1150. deps += [
  1151. "//cc:test_support",
  1152. "//cc/paint",
  1153. "//third_party/abseil-cpp:absl",
  1154. "//ui/lottie",
  1155. ]
  1156. }
  1157. # If the platform supports wayland, run wayland library unittests, too.
  1158. if (is_chromeos_ash || ozone_platform_wayland) {
  1159. deps += [ "//ui/base/wayland:unittests" ]
  1160. }
  1161. }
  1162. if (is_mac) {
  1163. mac_framework_bundle("ui_unittests_framework") {
  1164. testonly = true
  1165. framework_version = "U"
  1166. framework_contents = [ "Resources" ]
  1167. deps = [ "//ui/resources:ui_test_pak_bundle_data" ]
  1168. info_plist = "test/framework-Info.plist"
  1169. extra_substitutions = [ "CHROMIUM_BUNDLE_ID=$chrome_mac_bundle_id" ]
  1170. output_name = "ui_unittests Framework"
  1171. }
  1172. }
  1173. if (is_win) {
  1174. # This source set is used by both //chrome/browser and
  1175. # //chrome/installer/setup. It must have minimal dependencies for the latter
  1176. # (e.g., no skia).
  1177. source_set("fullscreen_win") {
  1178. sources = [
  1179. "fullscreen_win.cc",
  1180. "fullscreen_win.h",
  1181. ]
  1182. }
  1183. }
  1184. if (is_linux || is_chromeos) {
  1185. # This source set defines linux wm role names and must not have any external
  1186. # dependencies and be kept as minimal as possible.
  1187. source_set("wm_role_names") {
  1188. sources = [
  1189. "wm_role_names_linux.cc",
  1190. "wm_role_names_linux.h",
  1191. ]
  1192. }
  1193. }
  1194. # This target is added as a dependency of browser interactive_ui_tests. It must
  1195. # be source_set, otherwise the linker will drop the tests as dead code.
  1196. source_set("base_interactive_ui_tests") {
  1197. testonly = true
  1198. if (is_win) {
  1199. sources =
  1200. [ "accelerators/global_media_keys_listener_win_interactive_test.cc" ]
  1201. deps = [
  1202. ":base",
  1203. ":test_support",
  1204. "//base/test:test_support",
  1205. "//testing/gtest",
  1206. "//ui/events:events",
  1207. ]
  1208. }
  1209. }
  1210. fuzzer_test("file_info_fuzzer") {
  1211. sources = [ "clipboard/file_info_fuzzer.cc" ]
  1212. deps = [
  1213. "//base",
  1214. "//ui/base/clipboard:file_info",
  1215. ]
  1216. }
  1217. # Same as locales, but includes "en" on Apple platforms.
  1218. # Apple platforms use "en" instead of "en-US" (see the definition of
  1219. # |locales_as_apple_outputs| in locales.gni). However, we still want to keep
  1220. # "en-US" in the list as the |ResourceBundle::GetLocaleFilePath| implementations
  1221. # in ui/base/resource/resource_bundle_{mac,ios}.mm return a valid path for
  1222. # "en-US" (as they internally rewrite it as "en" instead).
  1223. locales_for_platform_list = platform_pak_locales
  1224. if (is_apple) {
  1225. locales_for_platform_list += [ "en" ]
  1226. }
  1227. action("locales_list_gen") {
  1228. script = "//tools/l10n/generate_locales_list.py"
  1229. outputs = [ "$root_gen_dir/ui/base/l10n/l10n_util_locales_list.inc" ]
  1230. args = rebase_path(outputs, root_build_dir) + locales_for_platform_list
  1231. }
  1232. source_set("locales_list") {
  1233. deps = [ ":locales_list_gen" ]
  1234. sources = [ "$root_gen_dir/ui/base/l10n/l10n_util_locales_list.inc" ]
  1235. }