Home | History | Annotate | Download | only in base
      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 
      5 import("//build/config/ui.gni")
      6 
      7 if (is_android) {
      8   import("//build/config/android/config.gni")
      9   import("//build/config/android/rules.gni")
     10 }
     11 
     12 build_ime = !is_ios
     13 
     14 component("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 
    653 source_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 
    686 if (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.
    703 if (!is_android) {
    704 # GYP version: ui/base/ui_base_tests.gyp:ui_unittests
    705 test("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