Cleanup: Only do a Local State file lookup when needed.
[chromium-blink-merge.git] / ui / base / BUILD.gn
blobb16f5a5061732e6a2fb12a2be39a9bbe8ea50d19
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")
6 import("//testing/test.gni")
8 if (is_android) {
9   import("//build/config/android/config.gni")
10   import("//build/config/android/rules.gni")
13 build_ime = !is_ios
15 component("base") {
16   output_name = "ui_base"
17   sources = [
18     "accelerators/accelerator.cc",
19     "accelerators/accelerator.h",
20     "accelerators/accelerator_history.cc",
21     "accelerators/accelerator_history.h",
22     "accelerators/accelerator_manager.cc",
23     "accelerators/accelerator_manager.h",
24     "accelerators/menu_label_accelerator_util_linux.cc",
25     "accelerators/menu_label_accelerator_util_linux.h",
26     "accelerators/platform_accelerator.h",
27     "accelerators/platform_accelerator_cocoa.h",
28     "accelerators/platform_accelerator_cocoa.mm",
29     "android/ui_base_jni_registrar.cc",
30     "android/ui_base_jni_registrar.h",
31     "android/view_android.cc",
32     "android/view_android.h",
33     "android/window_android.cc",
34     "android/window_android.h",
35     "android/window_android_compositor.h",
36     "android/window_android_observer.h",
37     "base_window.cc",
38     "base_window.h",
39     "clipboard/clipboard.cc",
40     "clipboard/clipboard.h",
41     "clipboard/clipboard_android.cc",
42     "clipboard/clipboard_android.h",
43     "clipboard/clipboard_constants.cc",
44     "clipboard/clipboard_mac.h",
45     "clipboard/clipboard_mac.mm",
46     "clipboard/clipboard_types.h",
47     "clipboard/clipboard_util_win.cc",
48     "clipboard/clipboard_util_win.h",
49     "clipboard/clipboard_win.cc",
50     "clipboard/clipboard_win.h",
51     "clipboard/custom_data_helper.cc",
52     "clipboard/custom_data_helper.h",
53     "clipboard/custom_data_helper_linux.cc",
54     "clipboard/custom_data_helper_mac.mm",
55     "clipboard/scoped_clipboard_writer.cc",
56     "clipboard/scoped_clipboard_writer.h",
57     "cocoa/animation_utils.h",
58     "cocoa/appkit_utils.h",
59     "cocoa/appkit_utils.mm",
60     "cocoa/base_view.h",
61     "cocoa/base_view.mm",
62     "cocoa/cocoa_base_utils.h",
63     "cocoa/cocoa_base_utils.mm",
64     "cocoa/controls/blue_label_button.h",
65     "cocoa/controls/blue_label_button.mm",
66     "cocoa/controls/hover_image_menu_button.h",
67     "cocoa/controls/hover_image_menu_button.mm",
68     "cocoa/controls/hover_image_menu_button_cell.h",
69     "cocoa/controls/hover_image_menu_button_cell.mm",
70     "cocoa/controls/hyperlink_button_cell.h",
71     "cocoa/controls/hyperlink_button_cell.mm",
72     "cocoa/controls/hyperlink_text_view.h",
73     "cocoa/controls/hyperlink_text_view.mm",
74     "cocoa/find_pasteboard.h",
75     "cocoa/find_pasteboard.mm",
76     "cocoa/flipped_view.h",
77     "cocoa/flipped_view.mm",
78     "cocoa/focus_tracker.h",
79     "cocoa/focus_tracker.mm",
80     "cocoa/focus_window_set.h",
81     "cocoa/focus_window_set.mm",
82     "cocoa/fullscreen_window_manager.h",
83     "cocoa/fullscreen_window_manager.mm",
84     "cocoa/hover_button.h",
85     "cocoa/hover_button.mm",
86     "cocoa/hover_image_button.h",
87     "cocoa/hover_image_button.mm",
88     "cocoa/menu_controller.h",
89     "cocoa/menu_controller.mm",
90     "cocoa/nib_loading.h",
91     "cocoa/nib_loading.mm",
92     "cocoa/nsgraphics_context_additions.h",
93     "cocoa/nsgraphics_context_additions.mm",
94     "cocoa/nsview_additions.h",
95     "cocoa/nsview_additions.mm",
96     "cocoa/remote_layer_api.h",
97     "cocoa/remote_layer_api.mm",
98     "cocoa/tracking_area.h",
99     "cocoa/tracking_area.mm",
100     "cocoa/underlay_opengl_hosting_window.h",
101     "cocoa/underlay_opengl_hosting_window.mm",
102     "cocoa/view_description.h",
103     "cocoa/view_description.mm",
104     "cocoa/window_size_constants.h",
105     "cocoa/window_size_constants.mm",
106     "cursor/cursor.cc",
107     "cursor/cursor.h",
108     "cursor/cursor_android.cc",
109     "cursor/cursor_loader.h",
110     "cursor/cursor_util.cc",
111     "cursor/cursor_util.h",
112     "cursor/cursor_win.cc",
113     "cursor/cursors_aura.cc",
114     "cursor/cursors_aura.h",
115     "cursor/image_cursors.cc",
116     "cursor/image_cursors.h",
117     "default_theme_provider.cc",
118     "default_theme_provider.h",
119     "default_theme_provider_mac.mm",
120     "device_form_factor_android.cc",
121     "device_form_factor_android.h",
122     "device_form_factor_desktop.cc",
123     "device_form_factor_ios.mm",
124     "device_form_factor.h",
125     "dragdrop/cocoa_dnd_util.h",
126     "dragdrop/cocoa_dnd_util.mm",
127     "dragdrop/drag_drop_types.h",
128     "dragdrop/drag_drop_types_win.cc",
129     "dragdrop/drag_source_win.cc",
130     "dragdrop/drag_source_win.h",
131     "dragdrop/drag_utils.cc",
132     "dragdrop/drag_utils.h",
133     "dragdrop/drag_utils_aura.cc",
134     "dragdrop/drag_utils_mac.mm",
135     "dragdrop/drag_utils_win.cc",
136     "dragdrop/drop_target_event.cc",
137     "dragdrop/drop_target_event.h",
138     "dragdrop/drop_target_win.cc",
139     "dragdrop/drop_target_win.h",
140     "dragdrop/file_info.cc",
141     "dragdrop/file_info.h",
142     "dragdrop/os_exchange_data.cc",
143     "dragdrop/os_exchange_data.h",
144     "dragdrop/os_exchange_data_provider_mac.h",
145     "dragdrop/os_exchange_data_provider_mac.mm",
146     "dragdrop/os_exchange_data_provider_win.cc",
147     "dragdrop/os_exchange_data_provider_win.h",
148     "font_helper_chromeos.cc",
149     "font_helper_chromeos.h",
150     "hit_test.h",
151     "idle/idle.cc",
152     "idle/idle_chromeos.cc",
153     "idle/idle.h",
154     "idle/idle_linux.cc",
155     "idle/idle_mac.mm",
156     "idle/idle_win.cc",
157     "l10n/formatter.cc",
158     "l10n/formatter.h",
159     "l10n/l10n_font_util.cc",
160     "l10n/l10n_font_util.h",
161     "l10n/l10n_util.cc",
162     "l10n/l10n_util.h",
163     "l10n/l10n_util_android.cc",
164     "l10n/l10n_util_android.h",
165     "l10n/l10n_util_collator.h",
166     "l10n/l10n_util_mac.h",
167     "l10n/l10n_util_mac.mm",
168     "l10n/l10n_util_plurals.cc",
169     "l10n/l10n_util_plurals.h",
170     "l10n/l10n_util_posix.cc",
171     "l10n/l10n_util_win.cc",
172     "l10n/l10n_util_win.h",
173     "l10n/time_format.cc",
174     "l10n/time_format.h",
175     "layout.cc",
176     "layout.h",
177     "layout_mac.mm",
178     "models/button_menu_item_model.cc",
179     "models/button_menu_item_model.h",
180     "models/combobox_model.cc",
181     "models/combobox_model.h",
182     "models/combobox_model_observer.h",
183     "models/dialog_model.cc",
184     "models/dialog_model.h",
185     "models/list_model.h",
186     "models/list_model_observer.h",
187     "models/list_selection_model.cc",
188     "models/list_selection_model.h",
189     "models/menu_model.cc",
190     "models/menu_model.h",
191     "models/menu_model_delegate.h",
192     "models/menu_separator_types.h",
193     "models/simple_combobox_model.cc",
194     "models/simple_combobox_model.h",
195     "models/simple_menu_model.cc",
196     "models/simple_menu_model.h",
197     "models/table_model.cc",
198     "models/table_model.h",
199     "models/table_model_observer.h",
200     "models/tree_model.cc",
201     "models/tree_model.h",
202     "models/tree_node_iterator.h",
203     "models/tree_node_model.h",
204     "nine_image_painter_factory.cc",
205     "nine_image_painter_factory.h",
206     "page_transition_types.cc",
207     "page_transition_types.h",
208     "resource/data_pack.cc",
209     "resource/data_pack.h",
210     "resource/resource_bundle.cc",
211     "resource/resource_bundle.h",
212     "resource/resource_bundle_android.cc",
213     "resource/resource_bundle_auralinux.cc",
214     "resource/resource_bundle_ios.mm",
215     "resource/resource_bundle_mac.mm",
216     "resource/resource_bundle_win.cc",
217     "resource/resource_bundle_win.h",
218     "resource/resource_data_dll_win.cc",
219     "resource/resource_data_dll_win.h",
220     "resource/resource_handle.h",
221     "text/bytes_formatting.cc",
222     "text/bytes_formatting.h",
223     "theme_provider.cc",
224     "theme_provider.h",
225     "touch/selection_bound.cc",
226     "touch/selection_bound.h",
227     "touch/touch_device.h",
228     "touch/touch_editing_controller.cc",
229     "touch/touch_editing_controller.h",
230     "touch/touch_enabled.cc",
231     "touch/touch_enabled.h",
232     "ui_base_export.h",
233     "ui_base_exports.cc",
234     "ui_base_paths.cc",
235     "ui_base_paths.h",
236     "ui_base_switches.cc",
237     "ui_base_switches.h",
238     "ui_base_switches_util.cc",
239     "ui_base_switches_util.h",
240     "ui_base_types.cc",
241     "ui_base_types.h",
242     "user_activity/user_activity_detector.cc",
243     "user_activity/user_activity_detector.h",
244     "user_activity/user_activity_observer.h",
245     "view_prop.cc",
246     "view_prop.h",
247     "webui/jstemplate_builder.cc",
248     "webui/jstemplate_builder.h",
249     "webui/web_ui_util.cc",
250     "webui/web_ui_util.h",
251     "win/accessibility_ids_win.h",
252     "win/accessibility_misc_utils.cc",
253     "win/accessibility_misc_utils.h",
254     "win/atl_module.h",
255     "win/foreground_helper.cc",
256     "win/foreground_helper.h",
257     "win/hidden_window.cc",
258     "win/hidden_window.h",
259     "win/hwnd_subclass.cc",
260     "win/hwnd_subclass.h",
261     "win/internal_constants.cc",
262     "win/internal_constants.h",
263     "win/lock_state.cc",
264     "win/lock_state.h",
265     "win/open_file_name_win.cc",
266     "win/open_file_name_win.h",
267     "win/message_box_win.cc",
268     "win/message_box_win.h",
269     "win/mouse_wheel_util.cc",
270     "win/mouse_wheel_util.h",
271     "win/scoped_ole_initializer.cc",
272     "win/scoped_ole_initializer.h",
273     "win/shell.cc",
274     "win/shell.h",
275     "win/touch_input.cc",
276     "win/touch_input.h",
277     "win/window_event_target.cc",
278     "win/window_event_target.h",
279     "window_open_disposition.cc",
280     "window_open_disposition.h",
281     "work_area_watcher_observer.h",
282   ]
284   if (is_win) {
285     sources += [ "touch/touch_device_win.cc" ]
286   } else if (is_android) {
287     sources += [ "touch/touch_device_android.cc" ]
288   } else if (is_linux) {
289     sources += [ "touch/touch_device_linux.cc" ]
290   } else {
291     # Empty implementation for all other cases.
292     sources += [ "touch/touch_device.cc" ]
293   }
295   defines = [ "UI_BASE_IMPLEMENTATION" ]
297   public_deps = [
298     "//base",
299     "//skia",
300     "//ui/events/platform",
301     "//ui/events:events_base",
302     "//ui/gfx",
303     "//ui/gfx/geometry",
304   ]
305   deps = [
306     "//base/third_party/dynamic_annotations",
307     "//base:base_static",
308     "//base:i18n",
309     "//cc",
310     "//net",
311     "//third_party/icu",
312     "//ui/events",
313     "//ui/events/devices",
314     "//ui/resources",
315     "//ui/strings",
316     "//url",
317   ]
319   if (build_ime) {
320     sources += [
321       "ime/candidate_window.cc",
322       "ime/candidate_window.h",
323       "ime/chromeos/character_composer.cc",
324       "ime/chromeos/character_composer.h",
325       "ime/chromeos/component_extension_ime_manager.cc",
326       "ime/chromeos/component_extension_ime_manager.h",
327       "ime/chromeos/composition_text.cc",
328       "ime/chromeos/composition_text.h",
329       "ime/chromeos/extension_ime_util.cc",
330       "ime/chromeos/extension_ime_util.h",
331       "ime/chromeos/fake_ime_keyboard.cc",
332       "ime/chromeos/fake_ime_keyboard.h",
333       "ime/chromeos/fake_input_method_delegate.cc",
334       "ime/chromeos/fake_input_method_delegate.h",
335       "ime/chromeos/ime_bridge.cc",
336       "ime/chromeos/ime_bridge.h",
337       "ime/chromeos/ime_keyboard.cc",
338       "ime/chromeos/ime_keyboard.h",
339       "ime/chromeos/ime_keyboard_ozone.cc",
340       "ime/chromeos/ime_keyboard_ozone.h",
341       "ime/chromeos/ime_keyboard_x11.cc",
342       "ime/chromeos/ime_keyboard_x11.h",
343       "ime/chromeos/ime_keymap.cc",
344       "ime/chromeos/ime_keymap.h",
345       "ime/chromeos/input_method_delegate.h",
346       "ime/chromeos/input_method_descriptor.cc",
347       "ime/chromeos/input_method_descriptor.h",
348       "ime/chromeos/input_method_manager.cc",
349       "ime/chromeos/input_method_manager.h",
350       "ime/chromeos/input_method_whitelist.cc",
351       "ime/chromeos/input_method_whitelist.h",
352       "ime/chromeos/mock_component_extension_ime_manager_delegate.cc",
353       "ime/chromeos/mock_component_extension_ime_manager_delegate.h",
354       "ime/chromeos/mock_ime_candidate_window_handler.cc",
355       "ime/chromeos/mock_ime_candidate_window_handler.h",
356       "ime/chromeos/mock_ime_engine_handler.cc",
357       "ime/chromeos/mock_ime_engine_handler.h",
358       "ime/chromeos/mock_ime_input_context_handler.cc",
359       "ime/chromeos/mock_ime_input_context_handler.h",
360       "ime/composition_text.cc",
361       "ime/composition_text.h",
362       "ime/composition_text_util_pango.cc",
363       "ime/composition_text_util_pango.h",
364       "ime/composition_underline.h",
365       "ime/dummy_input_method_delegate.cc",
366       "ime/dummy_input_method_delegate.h",
367       "ime/infolist_entry.cc",
368       "ime/infolist_entry.h",
369       "ime/input_method.h",
370       "ime/input_method_auralinux.cc",
371       "ime/input_method_auralinux.h",
372       "ime/input_method_base.cc",
373       "ime/input_method_base.h",
374       "ime/input_method_chromeos.cc",
375       "ime/input_method_chromeos.h",
376       "ime/input_method_delegate.h",
377       "ime/input_method_factory.cc",
378       "ime/input_method_factory.h",
379       "ime/input_method_initializer.cc",
380       "ime/input_method_initializer.h",
381       "ime/input_method_mac.h",
382       "ime/input_method_mac.mm",
383       "ime/input_method_minimal.cc",
384       "ime/input_method_minimal.h",
385       "ime/input_method_observer.h",
386       "ime/input_method_win.cc",
387       "ime/input_method_win.h",
388       "ime/linux/fake_input_method_context.cc",
389       "ime/linux/fake_input_method_context.h",
390       "ime/linux/fake_input_method_context_factory.cc",
391       "ime/linux/fake_input_method_context_factory.h",
392       "ime/linux/linux_input_method_context.h",
393       "ime/linux/linux_input_method_context_factory.cc",
394       "ime/linux/linux_input_method_context_factory.h",
395       "ime/mock_input_method.cc",
396       "ime/mock_input_method.h",
397       "ime/remote_input_method_delegate_win.h",
398       "ime/remote_input_method_win.cc",
399       "ime/remote_input_method_win.h",
400       "ime/text_input_client.cc",
401       "ime/text_input_client.h",
402       "ime/text_input_focus_manager.cc",
403       "ime/text_input_focus_manager.h",
404       "ime/text_input_type.h",
405       "ime/win/imm32_manager.cc",
406       "ime/win/imm32_manager.h",
407       "ime/win/tsf_input_scope.cc",
408       "ime/win/tsf_input_scope.h",
409     ]
411     if (!use_aura || (!is_linux && !use_ozone)) {
412       sources -= [
413         "ime/input_method_auralinux.cc",
414         "ime/input_method_auralinux.h",
415       ]
416     }
418     if (!toolkit_views && !use_aura) {
419       sources -= [
420         "ime/input_method_factory.cc",
421         "ime/input_method_factory.h",
422         "ime/input_method_minimal.cc",
423         "ime/input_method_minimal.h",
424       ]
425     }
427     if (is_chromeos) {
428       deps += [
429         "//chromeos",
430         "//chromeos/ime:gencode",
431       ]
432       if (!use_ozone) {
433         sources -= [
434           "ime/chromeos/ime_keyboard_ozone.cc",
435           "ime/chromeos/ime_keyboard_ozone.h",
436         ]
437       }
438       if (!use_x11) {
439         sources -= [
440           "ime/chromeos/ime_keyboard_x11.cc",
441           "ime/chromeos/ime_keyboard_x11.h",
442         ]
443       }
444     }
446     if (use_pango) {
447       configs += [ "//build/config/linux:pangocairo" ]
448     } else {
449       sources -= [
450         "ime/composition_text_util_pango.cc",
451         "ime/composition_text_util_pango.h",
452       ]
453     }
454   }
456   if (is_ios) {
457     sources += [
458       "l10n/l10n_util_mac.h",
459       "l10n/l10n_util_mac.mm",
460     ]
461   }
463   if (toolkit_views) {
464     deps += [ "//ui/events" ]
465   }
467   if (use_x11 && use_aura) {
468     sources += [
469       "x/selection_owner.cc",
470       "x/selection_owner.h",
471       "x/selection_requestor.cc",
472       "x/selection_requestor.h",
473       "x/selection_utils.cc",
474       "x/selection_utils.h",
475     ]
476   }
478   if (use_aura) {
479     deps += [ "//ui/events" ]
480   } else {
481     sources -= [
482       "cursor/cursor.cc",
483       "cursor/cursor.h",
484       "dragdrop/drag_utils_aura.cc",
485     ]
486   }
487   if (use_x11) {
488     sources += [
489       "x/x11_foreign_window_manager.cc",
490       "x/x11_foreign_window_manager.h",
491       "x/x11_menu_list.cc",
492       "x/x11_menu_list.h",
493       "x/x11_util.cc",
494       "x/x11_util.h",
495       "x/x11_util_internal.h",
496     ]
497     if (!is_chromeos) {
498       sources += [
499         "idle/idle_query_x11.cc",
500         "idle/idle_query_x11.h",
501         "idle/screensaver_window_finder_x11.cc",
502         "idle/screensaver_window_finder_x11.h",
503       ]
504       configs += [ "//build/config/linux:xscrnsaver" ]
505     }
506     deps += [ "//ui/gfx/x" ]
507   }
509   if (!use_aura || !is_linux) {
510     sources -= [ "resource/resource_bundle_auralinux.cc" ]
511   }
513   if (use_aura && is_win) {
514     sources -= [ "dragdrop/drag_utils_aura.cc" ]
515   }
517   if (is_linux) {
518     configs += [
519       "//build/config/linux:fontconfig",
520       "//build/config/linux:glib",
521     ]
522   }
524   if ((is_linux && !is_chromeos) || is_chromeos) {
525     if (!toolkit_views && !use_aura) {
526       sources -= [
527         "dragdrop/drag_utils.cc",
528         "dragdrop/drag_utils.h",
529       ]
530     }
531   }
533   if (is_chromeos) {
534     deps += [ "//chromeos" ]
535     sources -= [ "idle/idle_linux.cc" ]
536   }
538   if (is_chromeos || (use_aura && is_linux && !use_x11)) {
539     sources += [
540       "dragdrop/os_exchange_data_provider_aura.cc",
541       "dragdrop/os_exchange_data_provider_aura.h",
542     ]
543   }
545   libs = []
546   if (is_win) {
547     sources += [
548       "cursor/cursor_loader_win.cc",
549       "cursor/cursor_loader_win.h",
550     ]
551     deps += [ "//third_party/wtl" ]
552     cflags = [
553       "/wd4267",  # TODO(jschuh): C4267: http://crbug.com/167187 size_t -> int.
554       "/wd4324",  # Structure was padded due to __declspec(align()), which is
555                   # uninteresting.
556     ]
557     ldflags = [
558       "/DELAYLOAD:d2d1.dll",
559       "/DELAYLOAD:d3d10_1.dll",
560       "/DELAYLOAD:dwmapi.dll",
561     ]
562     libs += [
563       "d2d1.lib",
564       "d3d10_1.lib",
565       "dwmapi.lib",
566       "imm32.lib",
567       "d2d1.lib",
568       "dwmapi.lib",
569       "oleacc.lib",
570     ]
571   } else {
572     if (!use_aura) {
573       sources -= [
574         "view_prop.cc",
575         "view_prop.h",
576       ]
577     }
578   }
580   if (is_mac) {
581     deps += [ "//third_party/mozilla" ]
583     sources -= [
584       "cursor/image_cursors.cc",
585       "cursor/image_cursors.h",
586       "dragdrop/drag_utils.cc",
587       "dragdrop/drag_utils.h",
588     ]
590     libs += [
591       "Accelerate.framework",
592       "AudioUnit.framework",
593       "CoreVideo.framework",
594     ]
595   }
597   if (use_x11) {
598     #'all_dependent_settings': {
599     #'ldflags': [
600     #'-L<(PRODUCT_DIR)',
601     #],
602     #},
603     configs += [ "//build/config/linux:x11" ]
604   }
606   if (use_aura) {
607     if (use_x11) {
608       sources += [
609         "cursor/cursor_loader_x11.cc",
610         "cursor/cursor_loader_x11.h",
611         "cursor/cursor_x11.cc",
612       ]
613       if (!is_chromeos) {
614         # These Aura X11 files aren't used on ChromeOS.
615         sources += [
616           "dragdrop/os_exchange_data_provider_aurax11.cc",
617           "dragdrop/os_exchange_data_provider_aurax11.h",
618         ]
619       }
620     }
621   }
622   if (use_ozone) {
623     sources += [
624       "cursor/cursor_loader_ozone.cc",
625       "cursor/cursor_loader_ozone.h",
626       "cursor/cursor_ozone.cc",
627       "cursor/ozone/bitmap_cursor_factory_ozone.cc",
628       "cursor/ozone/bitmap_cursor_factory_ozone.h",
629     ]
631     deps += [
632       "//ui/events/ozone:events_ozone_layout",
633       "//ui/ozone:ozone_base",
634     ]
635   }
637   if (!toolkit_views) {
638     sources -= [
639       "dragdrop/drag_drop_types.h",
640       "dragdrop/drop_target_event.cc",
641       "dragdrop/drop_target_event.h",
642     ]
643   }
645   if (!toolkit_views && !use_aura) {
646     sources -= [
647       "dragdrop/os_exchange_data.cc",
648       "dragdrop/os_exchange_data.h",
649       "nine_image_painter_factory.cc",
650       "nine_image_painter_factory.h",
651     ]
652   }
654   if (is_android) {
655     sources -= [
656       "cursor/image_cursors.cc",
657       "cursor/image_cursors.h",
658       "default_theme_provider.cc",
659       "dragdrop/drag_utils.cc",
660       "dragdrop/drag_utils.h",
661       "l10n/l10n_font_util.cc",
662       "models/button_menu_item_model.cc",
663       "models/dialog_model.cc",
664       "theme_provider.cc",
665       "touch/touch_editing_controller.cc",
666       "ui_base_types.cc",
667     ]
669     deps += [ ":ui_base_jni_headers" ]
671     libs += [ "jnigraphics" ]
672   }
674   if (is_android && is_android_webview_build) {
675     deps += [ "//ui/android:ui_java" ]
676   }
678   if (is_android && !use_aura) {
679     sources -= [ "cursor/cursor_android.cc" ]
680   }
682   # Aura clipboard.
683   if (use_aura) {
684     if (use_x11) {
685       sources += [ "clipboard/clipboard_aurax11.cc" ]
686     } else if (!is_win) {
687       # This file is used for all non-X11, non-Windows aura Builds.
688       sources += [ "clipboard/clipboard_aura.cc" ]
689     }
690   }
692   if (is_android || is_ios) {
693     sources -= [
694       "device_form_factor_desktop.cc",
695       "idle/idle.cc",
696       "idle/idle.h",
697     ]
698   }
701 source_set("test_support") {
702   testonly = true
703   sources = [
704     "test/test_clipboard.cc",
705     "test/test_clipboard.h",
706     "test/ui_controls.h",
707     "test/ui_controls_aura.cc",
708     "test/ui_controls_internal_win.cc",
709     "test/ui_controls_internal_win.h",
710     "test/ui_controls_mac.mm",
711     "test/ui_controls_win.cc",
712   ]
714   public_deps = [
715     ":base",
716   ]
717   deps = [
718     "//base",
719     "//skia",
720     "//testing/gtest",
721     "//ui/events:events_base",
722     "//ui/gfx",
723     "//ui/gfx/geometry",
724   ]
726   if (build_ime) {
727     sources += [
728       "ime/dummy_input_method.cc",
729       "ime/dummy_input_method.h",
730       "ime/dummy_text_input_client.cc",
731       "ime/dummy_text_input_client.h",
732     ]
733   }
735   if (!use_aura) {
736     sources -= [ "test/ui_controls_aura.cc" ]
737   } else if (is_win) {
738     sources -= [ "test/ui_controls_win.cc" ]
739   }
742 if (is_android) {
743   generate_jni("ui_base_jni_headers") {
744     sources = [
745       "../android/java/src/org/chromium/ui/base/Clipboard.java",
746       "../android/java/src/org/chromium/ui/base/DeviceFormFactor.java",
747       "../android/java/src/org/chromium/ui/base/LocalizationUtils.java",
748       "../android/java/src/org/chromium/ui/base/ResourceBundle.java",
749       "../android/java/src/org/chromium/ui/base/SelectFileDialog.java",
750       "../android/java/src/org/chromium/ui/base/TouchDevice.java",
751       "../android/java/src/org/chromium/ui/base/ViewAndroid.java",
752       "../android/java/src/org/chromium/ui/base/WindowAndroid.java",
753     ]
754     jni_package = "base"
755   }
758 # GYP version: ui/base/ui_base_tests.gyp:ui_base_unittests
759 test("ui_base_unittests") {
760   sources = [
761     "l10n/l10n_util_mac_unittest.mm",
762     "l10n/l10n_util_unittest.cc",
763     "l10n/l10n_util_win_unittest.cc",
764     "l10n/time_format_unittest.cc",
765     "layout_unittest.cc",
766     "models/tree_node_iterator_unittest.cc",
767     "resource/data_pack_literal.cc",
768     "resource/data_pack_unittest.cc",
769     "resource/resource_bundle_unittest.cc",
770     "test/test_clipboard_unittest.cc",
771     "test/run_all_unittests.cc",
772     "user_activity/user_activity_detector_unittest.cc",
773   ]
775   if (is_android) {
776     sources -= [ "user_activity/user_activity_detector_unittest.cc" ]
777   }
779   if (is_ios) {
780     # Compile this Mac file on iOS as well.
781     set_sources_assignment_filter([])
782     sources += [ "l10n/l10n_util_mac_unittest.mm" ]
783     set_sources_assignment_filter(sources_assignment_filter)
784   } else {  # !is_ios
785     sources += [
786       "accelerators/accelerator_manager_unittest.cc",
787       "accelerators/menu_label_accelerator_util_linux_unittest.cc",
788       "clipboard/custom_data_helper_unittest.cc",
789       "cocoa/base_view_unittest.mm",
790       "cocoa/cocoa_base_utils_unittest.mm",
791       "cocoa/controls/blue_label_button_unittest.mm",
792       "cocoa/controls/hover_image_menu_button_unittest.mm",
793       "cocoa/controls/hyperlink_button_cell_unittest.mm",
794       "cocoa/controls/hyperlink_text_view_unittest.mm",
795       "cocoa/focus_tracker_unittest.mm",
796       "cocoa/fullscreen_window_manager_unittest.mm",
797       "cocoa/hover_image_button_unittest.mm",
798       "cocoa/menu_controller_unittest.mm",
799       "cocoa/nsgraphics_context_additions_unittest.mm",
800       "cocoa/nsview_additions_unittest.mm",
801       "cocoa/tracking_area_unittest.mm",
802       "models/list_model_unittest.cc",
803       "models/list_selection_model_unittest.cc",
804       "models/tree_node_model_unittest.cc",
805       "test/data/resource.h",
806       "text/bytes_formatting_unittest.cc",
807       "touch/selection_bound_unittest.cc",
808       "view_prop_unittest.cc",
809       "webui/web_ui_util_unittest.cc",
810     ]
811   }
813   if (build_ime) {
814     sources += [
815       "ime/candidate_window_unittest.cc",
816       "ime/chromeos/character_composer_unittest.cc",
817       "ime/input_method_base_unittest.cc",
818       "ime/input_method_chromeos_unittest.cc",
819       "ime/remote_input_method_win_unittest.cc",
820       "ime/win/imm32_manager_unittest.cc",
821       "ime/win/tsf_input_scope_unittest.cc",
822     ]
823     if (use_x11) {
824       sources += [ "ime/composition_text_util_pango_unittest.cc" ]
825     }
826     if (!use_x11 && is_chromeos) {
827       # These were already removed in the non-chromeos case.
828       sources -= [
829         "ime/chromeos/character_composer_unittest.cc",
830         "ime/input_method_chromeos_unittest.cc",
831       ]
832     }
833   }
835   deps = [
836     "//base",
837     "//base/allocator",
838     "//base/test:test_support",
839     "//net",
840     "//skia",
841     "//testing/gmock",
842     "//testing/gtest",
843     "//third_party/icu",
844     "//ui/base",
845     "//ui/base:test_support",
846     "//ui/events:events_base",
847     "//ui/events:test_support",
848     "//ui/gfx:test_support",
849     "//ui/resources",
850     "//ui/resources:ui_test_pak",
851     "//ui/strings",
852     "//url",
853   ]
855   if (is_ios) {
856     # TODO(GYP) lots of iOS-only steps for ui_base_unittests
857   }
859   if (is_win) {
860     sources += [
861       "dragdrop/os_exchange_data_win_unittest.cc",
862       "win/hwnd_subclass_unittest.cc",
863       "win/open_file_name_win_unittest.cc",
864     ]
866     ldflags = [
867       "/DELAYLOAD:d2d1.dll",
868       "/DELAYLOAD:d3d10_1.dll",
869     ]
870     libs = [
871       "d2d1.lib",
872       "d3d10_1.lib",
873       "imm32.lib",
874       "oleacc.lib",
875     ]
877     # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
878     cflags = [ "/wd4267" ]
879   }
881   if (!is_win || !use_aura) {
882     sources -= [ "view_prop_unittest.cc" ]
883   }
885   if (is_android) {
886     apk_deps = [ "//chrome:resources" ]
887   }
889   if (use_pango) {
890     configs += [ "//build/config/linux:pangocairo" ]
891   }
893   if (use_x11) {
894     sources += [ "cursor/cursor_loader_x11_unittest.cc" ]
896     configs += [ "//build/config/linux:x11" ]
898     deps += [
899       "//ui/events/platform/x11",
900       "//ui/gfx/x",
901     ]
903     datadeps = [
904       "//tools/xdisplaycheck",
905     ]
906   }
908   if (is_mac) {
909     deps += [
910       "//third_party/mozilla",
911       #'ui_base_tests_bundle',  TODO(GYP)
912     ]
913   }
915   if (use_aura || toolkit_views) {
916     sources += [ "dragdrop/os_exchange_data_unittest.cc" ]
918     deps += [
919       "//ui/events",
920       "//ui/events/platform",
921     ]
922   }
924   if (use_x11 && !is_chromeos) {
925     sources += [
926       "dragdrop/os_exchange_data_provider_aurax11_unittest.cc",
927       "x/selection_requestor_unittest.cc",
928     ]
929   }
931   if (is_chromeos) {
932     deps += [
933       "//chromeos",
934       "//ui/events:dom4_keycode_converter",
935     ]
936   }
938 # TODO(GYP) Mac (ui_base_tests_bundle)