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.
5 import("//build/config/ui.gni")
8 import("//build/config/android/config.gni")
9 import("//build/config/android/rules.gni")
15 output_name = "ui_base"
17 "accelerators/accelerator.cc",
18 "accelerators/accelerator.h",
19 "accelerators/accelerator_manager.cc",
20 "accelerators/accelerator_manager.h",
21 "accelerators/menu_label_accelerator_util_linux.cc",
22 "accelerators/menu_label_accelerator_util_linux.h",
23 "accelerators/platform_accelerator.h",
24 "accelerators/platform_accelerator_cocoa.h",
25 "accelerators/platform_accelerator_cocoa.mm",
26 "android/system_ui_resource_manager.h",
27 "android/ui_base_jni_registrar.cc",
28 "android/ui_base_jni_registrar.h",
29 "android/view_android.cc",
30 "android/view_android.h",
31 "android/window_android.cc",
32 "android/window_android.h",
33 "android/window_android_compositor.h",
34 "android/window_android_observer.h",
37 "clipboard/clipboard.cc",
38 "clipboard/clipboard.h",
39 "clipboard/clipboard_android.cc",
40 "clipboard/clipboard_android.h",
41 "clipboard/clipboard_constants.cc",
42 "clipboard/clipboard_mac.h",
43 "clipboard/clipboard_mac.mm",
44 "clipboard/clipboard_types.h",
45 "clipboard/clipboard_util_win.cc",
46 "clipboard/clipboard_util_win.h",
47 "clipboard/clipboard_win.cc",
48 "clipboard/clipboard_win.h",
49 "clipboard/custom_data_helper.cc",
50 "clipboard/custom_data_helper.h",
51 "clipboard/custom_data_helper_linux.cc",
52 "clipboard/custom_data_helper_mac.mm",
53 "clipboard/scoped_clipboard_writer.cc",
54 "clipboard/scoped_clipboard_writer.h",
55 "cocoa/animation_utils.h",
56 "cocoa/appkit_utils.h",
57 "cocoa/appkit_utils.mm",
60 "cocoa/cocoa_base_utils.h",
61 "cocoa/cocoa_base_utils.mm",
62 "cocoa/controls/blue_label_button.h",
63 "cocoa/controls/blue_label_button.mm",
64 "cocoa/controls/hover_image_menu_button.h",
65 "cocoa/controls/hover_image_menu_button.mm",
66 "cocoa/controls/hover_image_menu_button_cell.h",
67 "cocoa/controls/hover_image_menu_button_cell.mm",
68 "cocoa/controls/hyperlink_button_cell.h",
69 "cocoa/controls/hyperlink_button_cell.mm",
70 "cocoa/controls/hyperlink_text_view.h",
71 "cocoa/controls/hyperlink_text_view.mm",
72 "cocoa/find_pasteboard.h",
73 "cocoa/find_pasteboard.mm",
74 "cocoa/flipped_view.h",
75 "cocoa/flipped_view.mm",
76 "cocoa/focus_tracker.h",
77 "cocoa/focus_tracker.mm",
78 "cocoa/focus_window_set.h",
79 "cocoa/focus_window_set.mm",
80 "cocoa/fullscreen_window_manager.h",
81 "cocoa/fullscreen_window_manager.mm",
82 "cocoa/hover_button.h",
83 "cocoa/hover_button.mm",
84 "cocoa/hover_image_button.h",
85 "cocoa/hover_image_button.mm",
86 "cocoa/menu_controller.h",
87 "cocoa/menu_controller.mm",
88 "cocoa/nib_loading.h",
89 "cocoa/nib_loading.mm",
90 "cocoa/nsgraphics_context_additions.h",
91 "cocoa/nsgraphics_context_additions.mm",
92 "cocoa/nsview_additions.h",
93 "cocoa/nsview_additions.mm",
94 "cocoa/remote_layer_api.h",
95 "cocoa/remote_layer_api.mm",
96 "cocoa/tracking_area.h",
97 "cocoa/tracking_area.mm",
98 "cocoa/underlay_opengl_hosting_window.h",
99 "cocoa/underlay_opengl_hosting_window.mm",
100 "cocoa/view_description.h",
101 "cocoa/view_description.mm",
102 "cocoa/window_size_constants.h",
103 "cocoa/window_size_constants.mm",
106 "cursor/cursor_android.cc",
107 "cursor/cursor_loader.h",
108 "cursor/cursor_util.cc",
109 "cursor/cursor_util.h",
110 "cursor/cursor_win.cc",
111 "cursor/cursors_aura.cc",
112 "cursor/cursors_aura.h",
113 "cursor/image_cursors.cc",
114 "cursor/image_cursors.h",
115 "default_theme_provider.cc",
116 "default_theme_provider.h",
117 "default_theme_provider_mac.mm",
118 "device_form_factor_android.cc",
119 "device_form_factor_android.h",
120 "device_form_factor_desktop.cc",
121 "device_form_factor_ios.mm",
122 "device_form_factor.h",
123 "dragdrop/cocoa_dnd_util.h",
124 "dragdrop/cocoa_dnd_util.mm",
125 "dragdrop/drag_drop_types.h",
126 "dragdrop/drag_drop_types_win.cc",
127 "dragdrop/drag_source_win.cc",
128 "dragdrop/drag_source_win.h",
129 "dragdrop/drag_utils.cc",
130 "dragdrop/drag_utils.h",
131 "dragdrop/drag_utils_aura.cc",
132 "dragdrop/drag_utils_mac.mm",
133 "dragdrop/drag_utils_win.cc",
134 "dragdrop/drop_target_event.cc",
135 "dragdrop/drop_target_event.h",
136 "dragdrop/drop_target_win.cc",
137 "dragdrop/drop_target_win.h",
138 "dragdrop/file_info.cc",
139 "dragdrop/file_info.h",
140 "dragdrop/os_exchange_data.cc",
141 "dragdrop/os_exchange_data.h",
142 "dragdrop/os_exchange_data_provider_mac.h",
143 "dragdrop/os_exchange_data_provider_mac.mm",
144 "dragdrop/os_exchange_data_provider_win.cc",
145 "dragdrop/os_exchange_data_provider_win.h",
149 "l10n/l10n_font_util.cc",
150 "l10n/l10n_font_util.h",
153 "l10n/l10n_util_android.cc",
154 "l10n/l10n_util_android.h",
155 "l10n/l10n_util_collator.h",
156 "l10n/l10n_util_mac.h",
157 "l10n/l10n_util_mac.mm",
158 "l10n/l10n_util_plurals.cc",
159 "l10n/l10n_util_plurals.h",
160 "l10n/l10n_util_posix.cc",
161 "l10n/l10n_util_win.cc",
162 "l10n/l10n_util_win.h",
163 "l10n/time_format.cc",
164 "l10n/time_format.h",
168 "models/button_menu_item_model.cc",
169 "models/button_menu_item_model.h",
170 "models/combobox_model.cc",
171 "models/combobox_model.h",
172 "models/combobox_model_observer.h",
173 "models/dialog_model.cc",
174 "models/dialog_model.h",
175 "models/list_model.h",
176 "models/list_model_observer.h",
177 "models/list_selection_model.cc",
178 "models/list_selection_model.h",
179 "models/menu_model.cc",
180 "models/menu_model.h",
181 "models/menu_model_delegate.h",
182 "models/menu_separator_types.h",
183 "models/simple_combobox_model.cc",
184 "models/simple_combobox_model.h",
185 "models/simple_menu_model.cc",
186 "models/simple_menu_model.h",
187 "models/table_model.cc",
188 "models/table_model.h",
189 "models/table_model_observer.h",
190 "models/tree_model.cc",
191 "models/tree_model.h",
192 "models/tree_node_iterator.h",
193 "models/tree_node_model.h",
194 "nine_image_painter_factory.cc",
195 "nine_image_painter_factory.h",
196 "page_transition_types.cc",
197 "page_transition_types.h",
198 "page_transition_types_list.h",
199 "resource/data_pack.cc",
200 "resource/data_pack.h",
201 "resource/resource_bundle.cc",
202 "resource/resource_bundle.h",
203 "resource/resource_bundle_android.cc",
204 "resource/resource_bundle_auralinux.cc",
205 "resource/resource_bundle_ios.mm",
206 "resource/resource_bundle_mac.mm",
207 "resource/resource_bundle_win.cc",
208 "resource/resource_bundle_win.h",
209 "resource/resource_data_dll_win.cc",
210 "resource/resource_data_dll_win.h",
211 "resource/resource_handle.h",
212 "text/bytes_formatting.cc",
213 "text/bytes_formatting.h",
216 "touch/touch_device.h",
217 "touch/touch_editing_controller.cc",
218 "touch/touch_editing_controller.h",
219 "touch/touch_enabled.cc",
220 "touch/touch_enabled.h",
222 "ui_base_exports.cc",
225 "ui_base_switches.cc",
226 "ui_base_switches.h",
227 "ui_base_switches_util.cc",
228 "ui_base_switches_util.h",
233 "webui/jstemplate_builder.cc",
234 "webui/jstemplate_builder.h",
235 "webui/web_ui_util.cc",
236 "webui/web_ui_util.h",
237 "win/accessibility_ids_win.h",
238 "win/accessibility_misc_utils.cc",
239 "win/accessibility_misc_utils.h",
241 "win/foreground_helper.cc",
242 "win/foreground_helper.h",
243 "win/hidden_window.cc",
244 "win/hidden_window.h",
245 "win/hwnd_subclass.cc",
246 "win/hwnd_subclass.h",
247 "win/internal_constants.cc",
248 "win/internal_constants.h",
251 "win/open_file_name_win.cc",
252 "win/open_file_name_win.h",
253 "win/message_box_win.cc",
254 "win/message_box_win.h",
255 "win/mouse_wheel_util.cc",
256 "win/mouse_wheel_util.h",
257 "win/scoped_ole_initializer.cc",
258 "win/scoped_ole_initializer.h",
261 "win/touch_input.cc",
263 "win/window_event_target.cc",
264 "win/window_event_target.h",
265 "window_open_disposition.cc",
266 "window_open_disposition.h",
267 "work_area_watcher_observer.h",
271 sources += [ "touch/touch_device_win.cc" ]
272 } else if (is_android) {
273 sources += [ "touch/touch_device_android.cc" ]
274 } else if (use_ozone) {
275 sources += [ "touch/touch_device_ozone.cc" ]
276 } else if (use_aura && use_x11) {
277 sources += [ "touch/touch_device_aurax11.cc" ]
279 # Empty implementation for all other cases.
280 sources += [ "touch/touch_device.cc" ]
283 defines = [ "UI_BASE_IMPLEMENTATION" ]
288 "//ui/events/platform",
289 "//ui/events:events_base",
294 "//base/third_party/dynamic_annotations",
295 "//base:base_static",
312 "ime/candidate_window.cc",
313 "ime/candidate_window.h",
314 "ime/chromeos/character_composer.cc",
315 "ime/chromeos/character_composer.h",
316 "ime/chromeos/ime_bridge.cc",
317 "ime/chromeos/ime_bridge.h",
318 "ime/chromeos/ime_keymap.cc",
319 "ime/chromeos/ime_keymap.h",
320 "ime/chromeos/mock_ime_candidate_window_handler.cc",
321 "ime/chromeos/mock_ime_candidate_window_handler.h",
322 "ime/chromeos/mock_ime_engine_handler.cc",
323 "ime/chromeos/mock_ime_engine_handler.h",
324 "ime/chromeos/mock_ime_input_context_handler.cc",
325 "ime/chromeos/mock_ime_input_context_handler.h",
326 "ime/composition_text.cc",
327 "ime/composition_text.h",
328 "ime/composition_text_util_pango.cc",
329 "ime/composition_text_util_pango.h",
330 "ime/composition_underline.h",
331 "ime/dummy_input_method_delegate.cc",
332 "ime/dummy_input_method_delegate.h",
333 "ime/infolist_entry.cc",
334 "ime/infolist_entry.h",
335 "ime/input_method.h",
336 "ime/input_method_auralinux.cc",
337 "ime/input_method_auralinux.h",
338 "ime/input_method_base.cc",
339 "ime/input_method_base.h",
340 "ime/input_method_chromeos.cc",
341 "ime/input_method_chromeos.h",
342 "ime/input_method_delegate.h",
343 "ime/input_method_factory.cc",
344 "ime/input_method_factory.h",
345 "ime/input_method_initializer.cc",
346 "ime/input_method_initializer.h",
347 "ime/input_method_mac.h",
348 "ime/input_method_mac.mm",
349 "ime/input_method_minimal.cc",
350 "ime/input_method_minimal.h",
351 "ime/input_method_observer.h",
352 "ime/input_method_win.cc",
353 "ime/input_method_win.h",
354 "ime/linux/fake_input_method_context.cc",
355 "ime/linux/fake_input_method_context.h",
356 "ime/linux/fake_input_method_context_factory.cc",
357 "ime/linux/fake_input_method_context_factory.h",
358 "ime/linux/linux_input_method_context.h",
359 "ime/linux/linux_input_method_context_factory.cc",
360 "ime/linux/linux_input_method_context_factory.h",
361 "ime/mock_input_method.cc",
362 "ime/mock_input_method.h",
363 "ime/remote_input_method_delegate_win.h",
364 "ime/remote_input_method_win.cc",
365 "ime/remote_input_method_win.h",
366 "ime/text_input_client.cc",
367 "ime/text_input_client.h",
368 "ime/text_input_focus_manager.cc",
369 "ime/text_input_focus_manager.h",
370 "ime/text_input_type.h",
371 "ime/win/imm32_manager.cc",
372 "ime/win/imm32_manager.h",
373 "ime/win/tsf_input_scope.cc",
374 "ime/win/tsf_input_scope.h",
377 if (!use_aura || (!is_linux && !use_ozone)) {
379 "ime/input_method_auralinux.cc",
380 "ime/input_method_auralinux.h",
384 if (!toolkit_views && !use_aura) {
386 "ime/input_method_factory.cc",
387 "ime/input_method_factory.h",
388 "ime/input_method_minimal.cc",
389 "ime/input_method_minimal.h",
400 configs += [ "//build/config/linux:pangocairo" ]
403 "ime/composition_text_util_pango.cc",
404 "ime/composition_text_util_pango.h",
411 "l10n/l10n_util_mac.h",
412 "l10n/l10n_util_mac.mm",
422 if (use_x11 && use_aura) {
424 "x/selection_owner.cc",
425 "x/selection_owner.h",
426 "x/selection_requestor.cc",
427 "x/selection_requestor.h",
428 "x/selection_utils.cc",
429 "x/selection_utils.h",
441 "dragdrop/drag_utils_aura.cc",
446 "x/x11_foreign_window_manager.cc",
447 "x/x11_foreign_window_manager.h",
448 "x/x11_menu_list.cc",
452 "x/x11_util_internal.h",
454 deps += [ "//ui/gfx/x" ]
457 if (!use_aura || !is_linux) {
459 "resource/resource_bundle_auralinux.cc",
463 if (use_aura && is_win) {
465 "dragdrop/drag_utils_aura.cc",
471 "//build/config/linux:fontconfig",
472 "//build/config/linux:glib",
476 if ((is_linux && !is_chromeos) || is_chromeos) {
477 if (!toolkit_views && !use_aura) {
479 "dragdrop/drag_utils.cc",
480 "dragdrop/drag_utils.h",
485 if (is_chromeos || (use_aura && is_linux && !use_x11)) {
487 "dragdrop/os_exchange_data_provider_aura.cc",
488 "dragdrop/os_exchange_data_provider_aura.h",
495 "cursor/cursor_loader_win.cc",
496 "cursor/cursor_loader_win.h",
502 "/wd4267", # TODO(jschuh): C4267: http://crbug.com/167187 size_t -> int.
503 "/wd4324", # Structure was padded due to __declspec(align()), which is
507 "/DELAYLOAD:d2d1.dll",
508 "/DELAYLOAD:d3d10_1.dll",
509 "/DELAYLOAD:dwmapi.dll",
531 "//third_party/mozilla",
535 "cursor/image_cursors.cc",
536 "cursor/image_cursors.h",
537 "dragdrop/drag_utils.cc",
538 "dragdrop/drag_utils.h",
542 "Accelerate.framework",
543 "AudioUnit.framework",
544 "CoreVideo.framework",
549 #'all_dependent_settings': {
555 "//build/config/linux:x11"
562 "cursor/cursor_loader_x11.cc",
563 "cursor/cursor_loader_x11.h",
564 "cursor/cursor_x11.cc",
567 # These Aura X11 files aren't used on ChromeOS.
569 "dragdrop/os_exchange_data_provider_aurax11.cc",
570 "dragdrop/os_exchange_data_provider_aurax11.h",
577 "cursor/cursor_loader_ozone.cc",
578 "cursor/cursor_loader_ozone.h",
579 "cursor/cursor_ozone.cc",
580 "cursor/ozone/bitmap_cursor_factory_ozone.cc",
581 "cursor/ozone/bitmap_cursor_factory_ozone.h",
585 "//ui/ozone:ozone_base",
589 if (!toolkit_views) {
591 "dragdrop/drag_drop_types.h",
592 "dragdrop/drop_target_event.cc",
593 "dragdrop/drop_target_event.h",
594 "dragdrop/os_exchange_data.cc",
595 "dragdrop/os_exchange_data.h",
596 "nine_image_painter_factory.cc",
597 "nine_image_painter_factory.h",
603 "cursor/image_cursors.cc",
604 "cursor/image_cursors.h",
605 "default_theme_provider.cc",
606 "dragdrop/drag_utils.cc",
607 "dragdrop/drag_utils.h",
608 "l10n/l10n_font_util.cc",
609 "models/button_menu_item_model.cc",
610 "models/dialog_model.cc",
612 "touch/touch_editing_controller.cc",
617 ":ui_base_jni_headers",
625 if (is_android && is_android_webview_build) {
627 #TODO(GYP): port this component to GN.
628 #"//ui/android:ui_java",
632 if (is_android && !use_aura) {
634 "cursor/cursor_android.cc",
641 sources += [ "clipboard/clipboard_aurax11.cc" ]
642 } else if (!is_win) {
643 # This file is used for all non-X11, non-Windows aura Builds.
644 sources += [ "clipboard/clipboard_aura.cc" ]
648 if (is_android || is_ios) {
650 "device_form_factor_desktop.cc",
655 source_set("test_support") {
658 "test/ui_controls.h",
659 "test/ui_controls_aura.cc",
660 "test/ui_controls_internal_win.cc",
661 "test/ui_controls_internal_win.h",
662 "test/ui_controls_mac.mm",
663 "test/ui_controls_win.cc",
673 "//ui/events:events_base",
680 "ime/dummy_input_method.cc",
681 "ime/dummy_input_method.h",
682 "ime/dummy_text_input_client.cc",
683 "ime/dummy_text_input_client.h",
689 generate_jni("ui_base_jni_headers") {
691 "../android/java/src/org/chromium/ui/base/Clipboard.java",
692 "../android/java/src/org/chromium/ui/base/DeviceFormFactor.java",
693 "../android/java/src/org/chromium/ui/base/LocalizationUtils.java",
694 "../android/java/src/org/chromium/ui/base/ResourceBundle.java",
695 "../android/java/src/org/chromium/ui/base/SelectFileDialog.java",
696 "../android/java/src/org/chromium/ui/base/TouchDevice.java",
697 "../android/java/src/org/chromium/ui/base/ViewAndroid.java",
698 "../android/java/src/org/chromium/ui/base/WindowAndroid.java",
704 # TODO(GYP): Make this work on Android and reenable it.
706 # TODO(tfarina): Rename this target to ui_base_unittests.
707 # In order to do this we will need to keep this target, add a dummy
708 # ui_base_unittests target that just points to ui_unittests, change
709 # buildbot code to reference the new 'ui_base_unittests' target.
710 # After buildbot is updated, we can make the changes in Chromium and
711 # remove 'ui_unittests' target. crbug.com/331829
712 # GYP version: ui/base/ui_base_tests.gyp:ui_unittests
713 test("ui_unittests") {
715 "l10n/l10n_util_mac_unittest.mm",
716 "l10n/l10n_util_unittest.cc",
717 "l10n/l10n_util_win_unittest.cc",
718 "l10n/time_format_unittest.cc",
719 "layout_unittest.cc",
720 "models/tree_node_iterator_unittest.cc",
721 "resource/data_pack_literal.cc",
722 "resource/data_pack_unittest.cc",
723 "resource/resource_bundle_unittest.cc",
724 "test/run_all_unittests.cc",
728 # Compile this Mac file on iOS as well.
729 set_sources_assignment_filter([])
730 sources += [ "l10n/l10n_util_mac_unittest.mm" ]
731 set_sources_assignment_filter(sources_assignment_filter)
734 "accelerators/accelerator_manager_unittest.cc",
735 "accelerators/menu_label_accelerator_util_linux_unittest.cc",
736 "clipboard/custom_data_helper_unittest.cc",
737 "cocoa/base_view_unittest.mm",
738 "cocoa/cocoa_base_utils_unittest.mm",
739 "cocoa/controls/blue_label_button_unittest.mm",
740 "cocoa/controls/hover_image_menu_button_unittest.mm",
741 "cocoa/controls/hyperlink_button_cell_unittest.mm",
742 "cocoa/controls/hyperlink_text_view_unittest.mm",
743 "cocoa/focus_tracker_unittest.mm",
744 "cocoa/fullscreen_window_manager_unittest.mm",
745 "cocoa/hover_image_button_unittest.mm",
746 "cocoa/menu_controller_unittest.mm",
747 "cocoa/nsgraphics_context_additions_unittest.mm",
748 "cocoa/nsview_additions_unittest.mm",
749 "cocoa/tracking_area_unittest.mm",
750 "dragdrop/os_exchange_data_provider_aurax11_unittest.cc",
751 "models/list_model_unittest.cc",
752 "models/list_selection_model_unittest.cc",
753 "models/tree_node_model_unittest.cc",
754 "test/data/resource.h",
755 "text/bytes_formatting_unittest.cc",
756 "view_prop_unittest.cc",
757 "webui/web_ui_util_unittest.cc",
758 "x/selection_requestor_unittest.cc",
763 # These were already removed in the chromeos case.
765 "ime/chromeos/character_composer_unittest.cc",
766 "ime/input_method_chromeos_unittest.cc",
774 "ime/candidate_window_unittest.cc",
775 "ime/chromeos/character_composer_unittest.cc",
776 "ime/input_method_base_unittest.cc",
777 "ime/input_method_chromeos_unittest.cc",
778 "ime/remote_input_method_win_unittest.cc",
779 "ime/win/imm32_manager_unittest.cc",
780 "ime/win/tsf_input_scope_unittest.cc",
783 sources += [ "ime/composition_text_util_pango_unittest.cc" ]
790 "//base/test:test_support",
797 "//ui/base:test_support",
798 "//ui/events:events_base",
799 "//ui/events:test_support",
800 "//ui/gfx:test_support",
802 "//ui/resources:ui_test_pak",
808 # TODO(GYP) lots of iOS-only steps for ui_unittests
813 "dragdrop/os_exchange_data_win_unittest.cc",
814 "win/hwnd_subclass_unittest.cc",
815 "win/open_file_name_win_unittest.cc",
819 "/DELAYLOAD:d2d1.dll",
820 "/DELAYLOAD:d3d10_1.dll",
829 # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
830 cflags = [ "/wd4267" ]
835 #"testing/android/native_test.gyp:native_test_native_code" TODO(GYP)
841 "//build/config/linux:pangocairo"
847 "cursor/cursor_loader_x11_unittest.cc"
851 "//build/config/linux:x11"
855 "//ui/events/platform/x11",
860 "//tools/xdisplaycheck"
864 if (!is_win || !use_aura) {
866 "view_prop_unittest.cc"
872 "//third_party/mozilla",
873 #'ui_unittests_bundle', TODO(GYP)
877 if (use_aura || toolkit_views) {
879 "dragdrop/os_exchange_data_unittest.cc"
884 "//ui/events/platform",
890 "../chromeos/touch_exploration_controller_unittest.cc",
893 "dragdrop/os_exchange_data_provider_aurax11_unittest.cc",
894 "x/selection_requestor_unittest.cc",
898 "//ui/aura:test_support",
899 "//ui/events:gesture_detection",
900 "//ui/chromeos:ui_chromeos",
905 # TODO(GYP) Mac (ui_unittest_bundle) and Android (ui_unittests_apk).