• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
5import("//build/config/ui.gni")
6
7if (is_android) {
8  import("//build/config/android/config.gni")
9  import("//build/config/android/rules.gni")
10}
11
12build_ime = !is_ios
13
14component("base") {
15  output_name = "ui_base"
16  sources = [
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",
35    "base_window.cc",
36    "base_window.h",
37    "clipboard/clipboard.cc",
38    "clipboard/clipboard.h",
39    "clipboard/clipboard_android.cc",
40    "clipboard/clipboard_android_initialization.h",
41    "clipboard/clipboard_constants.cc",
42    "clipboard/clipboard_mac.mm",
43    "clipboard/clipboard_types.h",
44    "clipboard/clipboard_util_win.cc",
45    "clipboard/clipboard_util_win.h",
46    "clipboard/clipboard_win.cc",
47    "clipboard/custom_data_helper.cc",
48    "clipboard/custom_data_helper.h",
49    "clipboard/custom_data_helper_linux.cc",
50    "clipboard/custom_data_helper_mac.mm",
51    "clipboard/scoped_clipboard_writer.cc",
52    "clipboard/scoped_clipboard_writer.h",
53    "cocoa/animation_utils.h",
54    "cocoa/appkit_utils.h",
55    "cocoa/appkit_utils.mm",
56    "cocoa/base_view.h",
57    "cocoa/base_view.mm",
58    "cocoa/cocoa_base_utils.h",
59    "cocoa/cocoa_base_utils.mm",
60    "cocoa/controls/blue_label_button.h",
61    "cocoa/controls/blue_label_button.mm",
62    "cocoa/controls/hover_image_menu_button.h",
63    "cocoa/controls/hover_image_menu_button.mm",
64    "cocoa/controls/hover_image_menu_button_cell.h",
65    "cocoa/controls/hover_image_menu_button_cell.mm",
66    "cocoa/controls/hyperlink_button_cell.h",
67    "cocoa/controls/hyperlink_button_cell.mm",
68    "cocoa/controls/hyperlink_text_view.h",
69    "cocoa/controls/hyperlink_text_view.mm",
70    "cocoa/find_pasteboard.h",
71    "cocoa/find_pasteboard.mm",
72    "cocoa/flipped_view.h",
73    "cocoa/flipped_view.mm",
74    "cocoa/focus_tracker.h",
75    "cocoa/focus_tracker.mm",
76    "cocoa/focus_window_set.h",
77    "cocoa/focus_window_set.mm",
78    "cocoa/fullscreen_window_manager.h",
79    "cocoa/fullscreen_window_manager.mm",
80    "cocoa/hover_button.h",
81    "cocoa/hover_button.mm",
82    "cocoa/hover_image_button.h",
83    "cocoa/hover_image_button.mm",
84    "cocoa/menu_controller.h",
85    "cocoa/menu_controller.mm",
86    "cocoa/nib_loading.h",
87    "cocoa/nib_loading.mm",
88    "cocoa/nsgraphics_context_additions.h",
89    "cocoa/nsgraphics_context_additions.mm",
90    "cocoa/nsview_additions.h",
91    "cocoa/nsview_additions.mm",
92    "cocoa/remote_layer_api.h",
93    "cocoa/remote_layer_api.mm",
94    "cocoa/tracking_area.h",
95    "cocoa/tracking_area.mm",
96    "cocoa/underlay_opengl_hosting_window.h",
97    "cocoa/underlay_opengl_hosting_window.mm",
98    "cocoa/view_description.h",
99    "cocoa/view_description.mm",
100    "cocoa/window_size_constants.h",
101    "cocoa/window_size_constants.mm",
102    "cursor/cursor.cc",
103    "cursor/cursor.h",
104    "cursor/cursor_android.cc",
105    "cursor/cursor_loader.h",
106    "cursor/cursor_util.cc",
107    "cursor/cursor_util.h",
108    "cursor/cursor_win.cc",
109    "cursor/cursors_aura.cc",
110    "cursor/cursors_aura.h",
111    "cursor/image_cursors.cc",
112    "cursor/image_cursors.h",
113    "default_theme_provider.cc",
114    "default_theme_provider.h",
115    "default_theme_provider_mac.mm",
116    "device_form_factor_android.cc",
117    "device_form_factor_android.h",
118    "device_form_factor_desktop.cc",
119    "device_form_factor_ios.mm",
120    "device_form_factor.h",
121    "dragdrop/cocoa_dnd_util.h",
122    "dragdrop/cocoa_dnd_util.mm",
123    "dragdrop/drag_drop_types.h",
124    "dragdrop/drag_drop_types_win.cc",
125    "dragdrop/drag_source_win.cc",
126    "dragdrop/drag_source_win.h",
127    "dragdrop/drag_utils.cc",
128    "dragdrop/drag_utils.h",
129    "dragdrop/drag_utils_aura.cc",
130    "dragdrop/drag_utils_mac.mm",
131    "dragdrop/drag_utils_win.cc",
132    "dragdrop/drop_target_event.cc",
133    "dragdrop/drop_target_event.h",
134    "dragdrop/drop_target_win.cc",
135    "dragdrop/drop_target_win.h",
136    "dragdrop/file_info.cc",
137    "dragdrop/file_info.h",
138    "dragdrop/os_exchange_data.cc",
139    "dragdrop/os_exchange_data.h",
140    "dragdrop/os_exchange_data_provider_mac.h",
141    "dragdrop/os_exchange_data_provider_mac.mm",
142    "dragdrop/os_exchange_data_provider_win.cc",
143    "dragdrop/os_exchange_data_provider_win.h",
144    "hit_test.h",
145    "l10n/formatter.cc",
146    "l10n/formatter.h",
147    "l10n/l10n_font_util.cc",
148    "l10n/l10n_font_util.h",
149    "l10n/l10n_util.cc",
150    "l10n/l10n_util.h",
151    "l10n/l10n_util_android.cc",
152    "l10n/l10n_util_android.h",
153    "l10n/l10n_util_collator.h",
154    "l10n/l10n_util_mac.h",
155    "l10n/l10n_util_mac.mm",
156    "l10n/l10n_util_plurals.cc",
157    "l10n/l10n_util_plurals.h",
158    "l10n/l10n_util_posix.cc",
159    "l10n/l10n_util_win.cc",
160    "l10n/l10n_util_win.h",
161    "l10n/time_format.cc",
162    "l10n/time_format.h",
163    "layout.cc",
164    "layout.h",
165    "layout_mac.mm",
166    "models/button_menu_item_model.cc",
167    "models/button_menu_item_model.h",
168    "models/combobox_model.cc",
169    "models/combobox_model.h",
170    "models/combobox_model_observer.h",
171    "models/dialog_model.cc",
172    "models/dialog_model.h",
173    "models/list_model.h",
174    "models/list_model_observer.h",
175    "models/list_selection_model.cc",
176    "models/list_selection_model.h",
177    "models/menu_model.cc",
178    "models/menu_model.h",
179    "models/menu_model_delegate.h",
180    "models/menu_separator_types.h",
181    "models/simple_combobox_model.cc",
182    "models/simple_combobox_model.h",
183    "models/simple_menu_model.cc",
184    "models/simple_menu_model.h",
185    "models/table_model.cc",
186    "models/table_model.h",
187    "models/table_model_observer.h",
188    "models/tree_model.cc",
189    "models/tree_model.h",
190    "models/tree_node_iterator.h",
191    "models/tree_node_model.h",
192    "nine_image_painter_factory.cc",
193    "nine_image_painter_factory.h",
194    "page_transition_types.cc",
195    "page_transition_types.h",
196    "page_transition_types_list.h",
197    "resource/data_pack.cc",
198    "resource/data_pack.h",
199    "resource/resource_bundle.cc",
200    "resource/resource_bundle.h",
201    "resource/resource_bundle_android.cc",
202    "resource/resource_bundle_auralinux.cc",
203    "resource/resource_bundle_ios.mm",
204    "resource/resource_bundle_mac.mm",
205    "resource/resource_bundle_win.cc",
206    "resource/resource_bundle_win.h",
207    "resource/resource_data_dll_win.cc",
208    "resource/resource_data_dll_win.h",
209    "resource/resource_handle.h",
210    "text/bytes_formatting.cc",
211    "text/bytes_formatting.h",
212    "theme_provider.cc",
213    "theme_provider.h",
214    "touch/touch_device.h",
215    "touch/touch_editing_controller.cc",
216    "touch/touch_editing_controller.h",
217    "touch/touch_enabled.cc",
218    "touch/touch_enabled.h",
219    "ui_base_export.h",
220    "ui_base_exports.cc",
221    "ui_base_paths.cc",
222    "ui_base_paths.h",
223    "ui_base_switches.cc",
224    "ui_base_switches.h",
225    "ui_base_switches_util.cc",
226    "ui_base_switches_util.h",
227    "ui_base_types.cc",
228    "ui_base_types.h",
229    "view_prop.cc",
230    "view_prop.h",
231    "webui/jstemplate_builder.cc",
232    "webui/jstemplate_builder.h",
233    "webui/web_ui_util.cc",
234    "webui/web_ui_util.h",
235    "win/accessibility_ids_win.h",
236    "win/accessibility_misc_utils.cc",
237    "win/accessibility_misc_utils.h",
238    "win/atl_module.h",
239    "win/dpi_setup.cc",
240    "win/dpi_setup.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",
249    "win/lock_state.cc",
250    "win/lock_state.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",
259    "win/shell.cc",
260    "win/shell.h",
261    "win/touch_input.cc",
262    "win/touch_input.h",
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",
268  ]
269
270  if (is_win) {
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" ]
278  } else {
279    # Empty implementation for all other cases.
280    sources += [ "touch/touch_device.cc" ]
281  }
282
283  defines = [ "UI_BASE_IMPLEMENTATION" ]
284
285  public_deps = [
286    "//base",
287    "//skia",
288    "//ui/events/platform",
289    "//ui/events:events_base",
290    "//ui/gfx",
291    "//ui/gfx/geometry",
292  ]
293  deps = [
294    "//base/third_party/dynamic_annotations",
295    "//base:base_static",
296    "//base:i18n",
297    "//net",
298    "//third_party/icu",
299    "//ui/resources",
300    "//ui/strings",
301    "//url",
302  ]
303
304  if (build_ime) {
305    if (!is_android) {
306      deps += [
307        "//ui/events",
308      ]
309    }
310
311    sources += [
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",
375    ]
376
377    if (!use_aura || (!is_linux && !use_ozone)) {
378      sources -= [
379        "ime/input_method_auralinux.cc",
380        "ime/input_method_auralinux.h",
381      ]
382    }
383
384    if (!toolkit_views && !use_aura) {
385      sources -= [
386        "ime/input_method_factory.cc",
387        "ime/input_method_factory.h",
388        "ime/input_method_minimal.cc",
389        "ime/input_method_minimal.h",
390      ]
391    }
392
393    if (is_chromeos) {
394      deps += [
395        "//chromeos",
396      ]
397    }
398
399    if (use_pango) {
400      configs += [ "//build/config/linux:pangocairo" ]
401    } else {
402      sources -= [
403        "ime/composition_text_util_pango.cc",
404        "ime/composition_text_util_pango.h",
405      ]
406    }
407  }
408
409  if (is_ios) {
410    sources += [
411      "l10n/l10n_util_mac.h",
412      "l10n/l10n_util_mac.mm",
413    ]
414  }
415
416  if (toolkit_views) {
417    deps += [
418      "//ui/events",
419    ]
420  }
421
422  if (use_x11 && use_aura) {
423    sources += [
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",
430    ]
431  }
432
433  if (use_aura) {
434    deps += [
435      "//ui/events",
436    ]
437  } else {
438    sources -= [
439      "cursor/cursor.cc",
440      "cursor/cursor.h",
441      "dragdrop/drag_utils_aura.cc",
442    ]
443  }
444  if (use_x11) {
445    sources += [
446      "x/x11_foreign_window_manager.cc",
447      "x/x11_foreign_window_manager.h",
448      "x/x11_menu_list.cc",
449      "x/x11_menu_list.h",
450      "x/x11_util.cc",
451      "x/x11_util.h",
452      "x/x11_util_internal.h",
453    ]
454    deps += [ "//ui/gfx/x" ]
455  }
456
457  if (!use_aura || !is_linux) {
458    sources -= [
459      "resource/resource_bundle_auralinux.cc",
460    ]
461  }
462
463  if (use_aura && is_win) {
464    sources -= [
465      "dragdrop/drag_utils_aura.cc",
466    ]
467  }
468
469  if (is_linux) {
470    configs += [
471      "//build/config/linux:fontconfig",
472      "//build/config/linux:glib",
473    ]
474  }
475
476  if ((is_linux && !is_chromeos) || is_chromeos) {
477    if (!toolkit_views && !use_aura) {
478      sources -= [
479        "dragdrop/drag_utils.cc",
480        "dragdrop/drag_utils.h",
481      ]
482    }
483  }
484
485  if (is_chromeos || (use_aura && is_linux && !use_x11)) {
486    sources += [
487      "dragdrop/os_exchange_data_provider_aura.cc",
488      "dragdrop/os_exchange_data_provider_aura.h",
489    ]
490  }
491
492  libs = []
493  if (is_win) {
494    sources += [
495      "cursor/cursor_loader_win.cc",
496      "cursor/cursor_loader_win.h",
497    ]
498    deps += [
499      "//third_party/wtl",
500    ]
501    cflags = [
502      "/wd4267",  # TODO(jschuh): C4267: http://crbug.com/167187 size_t -> int.
503      "/wd4324",  # Structure was padded due to __declspec(align()), which is
504                  # uninteresting.
505    ]
506    ldflags = [
507      "/DELAYLOAD:d2d1.dll",
508      "/DELAYLOAD:d3d10_1.dll",
509      "/DELAYLOAD:dwmapi.dll",
510    ]
511    libs += [
512      "d2d1.lib",
513      "d3d10_1.lib",
514      "dwmapi.lib",
515      "imm32.lib",
516      "d2d1.lib",
517      "dwmapi.lib",
518      "oleacc.lib",
519    ]
520  } else {
521    if (!use_aura) {
522      sources -= [
523        "view_prop.cc",
524        "view_prop.h",
525      ]
526    }
527  }
528
529  if (is_mac) {
530    deps += [
531      "//third_party/mozilla",
532    ]
533
534    sources -= [
535      "cursor/image_cursors.cc",
536      "cursor/image_cursors.h",
537      "dragdrop/drag_utils.cc",
538      "dragdrop/drag_utils.h",
539    ]
540
541    libs += [
542      "Accelerate.framework",
543      "AudioUnit.framework",
544      "CoreVideo.framework",
545    ]
546  }
547
548  if (use_x11) {
549    #'all_dependent_settings': {
550      #'ldflags': [
551        #'-L<(PRODUCT_DIR)',
552      #],
553    #},
554    configs += [
555      "//build/config/linux:x11"
556    ]
557  }
558
559  if (use_aura) {
560    if (use_x11) {
561      sources += [
562        "cursor/cursor_loader_x11.cc",
563        "cursor/cursor_loader_x11.h",
564        "cursor/cursor_x11.cc",
565      ]
566      if (!is_chromeos) {
567        # These Aura X11 files aren't used on ChromeOS.
568        sources += [
569          "dragdrop/os_exchange_data_provider_aurax11.cc",
570          "dragdrop/os_exchange_data_provider_aurax11.h",
571        ]
572      }
573    }
574  }
575  if (use_ozone) {
576    sources += [
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",
582    ]
583
584    deps += [
585      "//ui/ozone:ozone_base",
586    ]
587  }
588
589  if (!toolkit_views) {
590    sources -= [
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",
598    ]
599  }
600
601  if (is_android) {
602    sources -= [
603      "default_theme_provider.cc",
604      "dragdrop/drag_utils.cc",
605      "dragdrop/drag_utils.h",
606      "l10n/l10n_font_util.cc",
607      "models/button_menu_item_model.cc",
608      "models/dialog_model.cc",
609      "theme_provider.cc",
610      "touch/touch_editing_controller.cc",
611      "ui_base_types.cc",
612    ]
613
614    deps += [
615      ":ui_base_jni_headers",
616    ]
617
618    libs += [
619      "jnigraphics",
620    ]
621  }
622
623  if (is_android && is_android_webview_build) {
624    deps += [
625      #TODO(GYP): port this component to GN.
626      #"//ui/android:ui_java",
627    ]
628  }
629
630  if (is_android && !use_aura) {
631    sources -= [
632      "cursor/cursor_android.cc",
633    ]
634  }
635
636  # Aura clipboard.
637  if (use_aura) {
638    if (use_x11) {
639      sources += [ "clipboard/clipboard_aurax11.cc" ]
640    } else if (!is_win) {
641      # This file is used for all non-X11, non-Windows aura Builds.
642      sources += [ "clipboard/clipboard_aura.cc" ]
643    }
644  }
645
646  if (is_android || is_ios) {
647    sources -= [
648      "device_form_factor_desktop.cc",
649    ]
650  }
651}
652
653source_set("test_support") {
654  testonly = true
655  sources = [
656    "test/ui_controls.h",
657    "test/ui_controls_aura.cc",
658    "test/ui_controls_internal_win.cc",
659    "test/ui_controls_internal_win.h",
660    "test/ui_controls_mac.mm",
661    "test/ui_controls_win.cc",
662  ]
663
664  public_deps = [
665    ":base",
666  ]
667  deps = [
668    "//base",
669    "//skia",
670    "//testing/gtest",
671    "//ui/events:events_base",
672    "//ui/gfx",
673    "//ui/gfx/geometry",
674  ]
675
676  if (build_ime) {
677    sources += [
678      "ime/dummy_input_method.cc",
679      "ime/dummy_input_method.h",
680      "ime/dummy_text_input_client.cc",
681      "ime/dummy_text_input_client.h",
682    ]
683  }
684}
685
686if (is_android) {
687  generate_jni("ui_base_jni_headers") {
688    sources = [
689      "../android/java/src/org/chromium/ui/base/Clipboard.java",
690      "../android/java/src/org/chromium/ui/base/DeviceFormFactor.java",
691      "../android/java/src/org/chromium/ui/base/LocalizationUtils.java",
692      "../android/java/src/org/chromium/ui/base/ResourceBundle.java",
693      "../android/java/src/org/chromium/ui/base/SelectFileDialog.java",
694      "../android/java/src/org/chromium/ui/base/TouchDevice.java",
695      "../android/java/src/org/chromium/ui/base/ViewAndroid.java",
696      "../android/java/src/org/chromium/ui/base/WindowAndroid.java",
697    ]
698    jni_package = "base"
699  }
700}
701
702# TODO(GYP): Make this work on Android and reenable it.
703if (!is_android) {
704# GYP version: ui/base/ui_base_tests.gyp:ui_unittests
705test("unittests") {
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  output_name = "ui_unittests"
713  sources = [
714    "l10n/l10n_util_mac_unittest.mm",
715    "l10n/l10n_util_unittest.cc",
716    "l10n/l10n_util_win_unittest.cc",
717    "l10n/time_format_unittest.cc",
718    "layout_unittest.cc",
719    "models/tree_node_iterator_unittest.cc",
720    "resource/data_pack_literal.cc",
721    "resource/data_pack_unittest.cc",
722    "resource/resource_bundle_unittest.cc",
723    "test/run_all_unittests.cc",
724  ]
725
726  if (is_ios) {
727    # Compile this Mac file on iOS as well.
728    set_sources_assignment_filter([])
729    sources += [ "l10n/l10n_util_mac_unittest.mm" ]
730    set_sources_assignment_filter(sources_assignment_filter)
731  } else {  # !is_ios
732    sources += [
733      "accelerators/accelerator_manager_unittest.cc",
734      "accelerators/menu_label_accelerator_util_linux_unittest.cc",
735      "clipboard/custom_data_helper_unittest.cc",
736      "cocoa/base_view_unittest.mm",
737      "cocoa/cocoa_base_utils_unittest.mm",
738      "cocoa/controls/blue_label_button_unittest.mm",
739      "cocoa/controls/hover_image_menu_button_unittest.mm",
740      "cocoa/controls/hyperlink_button_cell_unittest.mm",
741      "cocoa/controls/hyperlink_text_view_unittest.mm",
742      "cocoa/focus_tracker_unittest.mm",
743      "cocoa/fullscreen_window_manager_unittest.mm",
744      "cocoa/hover_image_button_unittest.mm",
745      "cocoa/menu_controller_unittest.mm",
746      "cocoa/nsgraphics_context_additions_unittest.mm",
747      "cocoa/nsview_additions_unittest.mm",
748      "cocoa/tracking_area_unittest.mm",
749      "dragdrop/os_exchange_data_provider_aurax11_unittest.cc",
750      "models/list_model_unittest.cc",
751      "models/list_selection_model_unittest.cc",
752      "models/tree_node_model_unittest.cc",
753      "test/data/resource.h",
754      "text/bytes_formatting_unittest.cc",
755      "view_prop_unittest.cc",
756      "webui/web_ui_util_unittest.cc",
757      "x/selection_requestor_unittest.cc",
758    ]
759
760    if (!use_x11) {
761      if (is_chromeos) {
762        # These were already removed in the chromeos case.
763        sources -= [
764          "ime/chromeos/character_composer_unittest.cc",
765          "ime/input_method_chromeos_unittest.cc",
766        ]
767      }
768    }
769  }
770
771  if (build_ime) {
772    sources += [
773      "ime/candidate_window_unittest.cc",
774      "ime/chromeos/character_composer_unittest.cc",
775      "ime/input_method_base_unittest.cc",
776      "ime/input_method_chromeos_unittest.cc",
777      "ime/remote_input_method_win_unittest.cc",
778      "ime/win/imm32_manager_unittest.cc",
779      "ime/win/tsf_input_scope_unittest.cc",
780    ]
781    if (use_x11) {
782      sources += [ "ime/composition_text_util_pango_unittest.cc" ]
783    }
784  }
785
786  deps = [
787    "//base",
788    "//base/allocator",
789    "//base/test:test_support",
790    "//net",
791    "//skia",
792    "//testing/gmock",
793    "//testing/gtest",
794    "//third_party/icu",
795    "//ui/base",
796    "//ui/base:test_support",
797    "//ui/events:events_base",
798    "//ui/events:test_support",
799    "//ui/gfx:test_support",
800    "//ui/resources",
801    "//ui/resources:ui_test_pak",
802    "//ui/strings",
803    "//url",
804  ]
805
806  if (is_ios) {
807    # TODO(GYP) lots of iOS-only steps for ui_unittests
808  }
809
810  if (is_win) {
811    sources += [
812      "dragdrop/os_exchange_data_win_unittest.cc",
813      "win/hwnd_subclass_unittest.cc",
814      "win/open_file_name_win_unittest.cc",
815    ]
816
817    ldflags = [
818      "/DELAYLOAD:d2d1.dll",
819      "/DELAYLOAD:d3d10_1.dll",
820    ]
821    libs = [
822      "d2d1.lib",
823      "d3d10_1.lib",
824      "imm32.lib",
825      "oleacc.lib",
826    ]
827
828    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
829    cflags = [ "/wd4267" ]
830  }
831
832  if (is_android) {
833    deps += [
834      #"testing/android/native_test.gyp:native_test_native_code"  TODO(GYP)
835    ]
836  }
837
838  if (use_pango) {
839    configs += [
840      "//build/config/linux:pangocairo"
841    ]
842  }
843
844  if (use_x11) {
845    sources += [
846      "cursor/cursor_loader_x11_unittest.cc"
847    ]
848
849    configs += [
850      "//build/config/linux:x11"
851    ]
852
853    deps += [
854      "//ui/events/platform/x11",
855      "//ui/gfx/x",
856    ]
857
858    datadeps = [
859      "//tools/xdisplaycheck"
860    ]
861  }
862
863  if (!is_win || !use_aura) {
864    sources -= [
865      "view_prop_unittest.cc"
866    ]
867  }
868
869  if (is_mac) {
870    deps += [
871      "//third_party/mozilla",
872      #'ui_unittests_bundle',  TODO(GYP)
873    ]
874  }
875
876  if (use_aura || toolkit_views) {
877    sources += [
878      "dragdrop/os_exchange_data_unittest.cc"
879    ]
880
881    deps += [
882      "//ui/events",
883      "//ui/events/platform",
884    ]
885  }
886
887  if (is_chromeos) {
888    sources += [
889      "../chromeos/touch_exploration_controller_unittest.cc",
890    ]
891    sources -= [
892      "dragdrop/os_exchange_data_provider_aurax11_unittest.cc",
893      "x/selection_requestor_unittest.cc",
894    ]
895    deps += [
896      "//ui/aura:test_support",
897      "//ui/events:gesture_detection",
898      #'../chromeos/chromeos.gyp:chromeos',  TODO(GYP)
899      #'chromeos/ui_chromeos.gyp:ui_chromeos',
900    ]
901  }
902}
903}
904# TODO(GYP) Mac (ui_unittest_bundle) and Android (ui_unittests_apk).
905