blob: 9b91d2065321492ce9096a481178dbaec3398599 [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/ui.gni")
import("//testing/test.gni")
if (is_android) {
import("//build/config/android/config.gni")
import("//build/config/android/rules.gni")
}
build_ime = !is_ios
component("base") {
output_name = "ui_base"
sources = [
"accelerators/accelerator.cc",
"accelerators/accelerator.h",
"accelerators/accelerator_history.cc",
"accelerators/accelerator_history.h",
"accelerators/accelerator_manager.cc",
"accelerators/accelerator_manager.h",
"accelerators/menu_label_accelerator_util_linux.cc",
"accelerators/menu_label_accelerator_util_linux.h",
"accelerators/platform_accelerator.h",
"accelerators/platform_accelerator_cocoa.h",
"accelerators/platform_accelerator_cocoa.mm",
"android/ui_base_jni_registrar.cc",
"android/ui_base_jni_registrar.h",
"base_window.cc",
"base_window.h",
"clipboard/clipboard.cc",
"clipboard/clipboard.h",
"clipboard/clipboard_android.cc",
"clipboard/clipboard_android.h",
"clipboard/clipboard_constants.cc",
"clipboard/clipboard_mac.h",
"clipboard/clipboard_mac.mm",
"clipboard/clipboard_types.h",
"clipboard/clipboard_util_win.cc",
"clipboard/clipboard_util_win.h",
"clipboard/clipboard_win.cc",
"clipboard/clipboard_win.h",
"clipboard/custom_data_helper.cc",
"clipboard/custom_data_helper.h",
"clipboard/custom_data_helper_linux.cc",
"clipboard/custom_data_helper_mac.mm",
"clipboard/scoped_clipboard_writer.cc",
"clipboard/scoped_clipboard_writer.h",
"cocoa/animation_utils.h",
"cocoa/appkit_utils.h",
"cocoa/appkit_utils.mm",
"cocoa/base_view.h",
"cocoa/base_view.mm",
"cocoa/cocoa_base_utils.h",
"cocoa/cocoa_base_utils.mm",
"cocoa/controls/blue_label_button.h",
"cocoa/controls/blue_label_button.mm",
"cocoa/controls/hover_image_menu_button.h",
"cocoa/controls/hover_image_menu_button.mm",
"cocoa/controls/hover_image_menu_button_cell.h",
"cocoa/controls/hover_image_menu_button_cell.mm",
"cocoa/controls/hyperlink_button_cell.h",
"cocoa/controls/hyperlink_button_cell.mm",
"cocoa/controls/hyperlink_text_view.h",
"cocoa/controls/hyperlink_text_view.mm",
"cocoa/find_pasteboard.h",
"cocoa/find_pasteboard.mm",
"cocoa/flipped_view.h",
"cocoa/flipped_view.mm",
"cocoa/focus_tracker.h",
"cocoa/focus_tracker.mm",
"cocoa/focus_window_set.h",
"cocoa/focus_window_set.mm",
"cocoa/fullscreen_window_manager.h",
"cocoa/fullscreen_window_manager.mm",
"cocoa/hover_button.h",
"cocoa/hover_button.mm",
"cocoa/hover_image_button.h",
"cocoa/hover_image_button.mm",
"cocoa/menu_controller.h",
"cocoa/menu_controller.mm",
"cocoa/nib_loading.h",
"cocoa/nib_loading.mm",
"cocoa/nsgraphics_context_additions.h",
"cocoa/nsgraphics_context_additions.mm",
"cocoa/nsview_additions.h",
"cocoa/nsview_additions.mm",
"cocoa/remote_layer_api.h",
"cocoa/remote_layer_api.mm",
"cocoa/three_part_image.h",
"cocoa/three_part_image.mm",
"cocoa/tracking_area.h",
"cocoa/tracking_area.mm",
"cocoa/underlay_opengl_hosting_window.h",
"cocoa/underlay_opengl_hosting_window.mm",
"cocoa/view_description.h",
"cocoa/view_description.mm",
"cocoa/window_size_constants.h",
"cocoa/window_size_constants.mm",
"cursor/cursor.cc",
"cursor/cursor.h",
"cursor/cursor_android.cc",
"cursor/cursor_loader.h",
"cursor/cursor_util.cc",
"cursor/cursor_util.h",
"cursor/cursor_win.cc",
"cursor/cursors_aura.cc",
"cursor/cursors_aura.h",
"cursor/image_cursors.cc",
"cursor/image_cursors.h",
"default_theme_provider.cc",
"default_theme_provider.h",
"default_theme_provider_mac.mm",
"device_form_factor.h",
"device_form_factor_android.cc",
"device_form_factor_android.h",
"device_form_factor_desktop.cc",
"device_form_factor_ios.mm",
"dragdrop/cocoa_dnd_util.h",
"dragdrop/cocoa_dnd_util.mm",
"dragdrop/drag_drop_types.h",
"dragdrop/drag_drop_types_win.cc",
"dragdrop/drag_source_win.cc",
"dragdrop/drag_source_win.h",
"dragdrop/drag_utils.cc",
"dragdrop/drag_utils.h",
"dragdrop/drag_utils_aura.cc",
"dragdrop/drag_utils_mac.mm",
"dragdrop/drag_utils_win.cc",
"dragdrop/drop_target_event.cc",
"dragdrop/drop_target_event.h",
"dragdrop/drop_target_win.cc",
"dragdrop/drop_target_win.h",
"dragdrop/file_info.cc",
"dragdrop/file_info.h",
"dragdrop/os_exchange_data.cc",
"dragdrop/os_exchange_data.h",
"dragdrop/os_exchange_data_provider_mac.h",
"dragdrop/os_exchange_data_provider_mac.mm",
"dragdrop/os_exchange_data_provider_win.cc",
"dragdrop/os_exchange_data_provider_win.h",
"font_helper_chromeos.cc",
"font_helper_chromeos.h",
"hit_test.h",
"idle/idle.cc",
"idle/idle.h",
"idle/idle_chromeos.cc",
"idle/idle_linux.cc",
"idle/idle_mac.mm",
"idle/idle_win.cc",
"l10n/formatter.cc",
"l10n/formatter.h",
"l10n/l10n_font_util.cc",
"l10n/l10n_font_util.h",
"l10n/l10n_util.cc",
"l10n/l10n_util.h",
"l10n/l10n_util_android.cc",
"l10n/l10n_util_android.h",
"l10n/l10n_util_collator.h",
"l10n/l10n_util_mac.h",
"l10n/l10n_util_mac.mm",
"l10n/l10n_util_plurals.cc",
"l10n/l10n_util_plurals.h",
"l10n/l10n_util_posix.cc",
"l10n/l10n_util_win.cc",
"l10n/l10n_util_win.h",
"l10n/time_format.cc",
"l10n/time_format.h",
"layout.cc",
"layout.h",
"layout_mac.mm",
"models/button_menu_item_model.cc",
"models/button_menu_item_model.h",
"models/combobox_model.cc",
"models/combobox_model.h",
"models/combobox_model_observer.h",
"models/dialog_model.cc",
"models/dialog_model.h",
"models/list_model.h",
"models/list_model_observer.h",
"models/list_selection_model.cc",
"models/list_selection_model.h",
"models/menu_model.cc",
"models/menu_model.h",
"models/menu_model_delegate.h",
"models/menu_separator_types.h",
"models/simple_combobox_model.cc",
"models/simple_combobox_model.h",
"models/simple_menu_model.cc",
"models/simple_menu_model.h",
"models/table_model.cc",
"models/table_model.h",
"models/table_model_observer.h",
"models/tree_model.cc",
"models/tree_model.h",
"models/tree_node_iterator.h",
"models/tree_node_model.h",
"nine_image_painter_factory.cc",
"nine_image_painter_factory.h",
"page_transition_types.cc",
"page_transition_types.h",
"resource/data_pack.cc",
"resource/data_pack.h",
"resource/resource_bundle.cc",
"resource/resource_bundle.h",
"resource/resource_bundle_android.cc",
"resource/resource_bundle_auralinux.cc",
"resource/resource_bundle_ios.mm",
"resource/resource_bundle_mac.mm",
"resource/resource_bundle_win.cc",
"resource/resource_bundle_win.h",
"resource/resource_data_dll_win.cc",
"resource/resource_data_dll_win.h",
"resource/resource_handle.h",
"text/bytes_formatting.cc",
"text/bytes_formatting.h",
"theme_provider.cc",
"theme_provider.h",
"touch/selection_bound.cc",
"touch/selection_bound.h",
"touch/touch_device.h",
"touch/touch_editing_controller.cc",
"touch/touch_editing_controller.h",
"touch/touch_enabled.cc",
"touch/touch_enabled.h",
"ui_base_export.h",
"ui_base_exports.cc",
"ui_base_paths.cc",
"ui_base_paths.h",
"ui_base_switches.cc",
"ui_base_switches.h",
"ui_base_switches_util.cc",
"ui_base_switches_util.h",
"ui_base_types.cc",
"ui_base_types.h",
"user_activity/user_activity_detector.cc",
"user_activity/user_activity_detector.h",
"user_activity/user_activity_observer.h",
"view_prop.cc",
"view_prop.h",
"webui/jstemplate_builder.cc",
"webui/jstemplate_builder.h",
"webui/web_ui_util.cc",
"webui/web_ui_util.h",
"win/accessibility_ids_win.h",
"win/accessibility_misc_utils.cc",
"win/accessibility_misc_utils.h",
"win/atl_module.h",
"win/foreground_helper.cc",
"win/foreground_helper.h",
"win/hidden_window.cc",
"win/hidden_window.h",
"win/hwnd_subclass.cc",
"win/hwnd_subclass.h",
"win/internal_constants.cc",
"win/internal_constants.h",
"win/lock_state.cc",
"win/lock_state.h",
"win/message_box_win.cc",
"win/message_box_win.h",
"win/mouse_wheel_util.cc",
"win/mouse_wheel_util.h",
"win/open_file_name_win.cc",
"win/open_file_name_win.h",
"win/scoped_ole_initializer.cc",
"win/scoped_ole_initializer.h",
"win/shell.cc",
"win/shell.h",
"win/touch_input.cc",
"win/touch_input.h",
"win/window_event_target.cc",
"win/window_event_target.h",
"window_open_disposition.cc",
"window_open_disposition.h",
"work_area_watcher_observer.h",
]
if (is_win) {
sources += [ "touch/touch_device_win.cc" ]
} else if (is_android) {
sources += [ "touch/touch_device_android.cc" ]
} else if (is_linux) {
sources += [ "touch/touch_device_linux.cc" ]
} else {
# Empty implementation for all other cases.
sources += [ "touch/touch_device.cc" ]
}
# TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
defines = [ "UI_BASE_IMPLEMENTATION" ]
public_deps = [
"//base",
"//skia",
"//ui/events/platform",
"//ui/events:events_base",
"//ui/gfx",
"//ui/gfx/geometry",
]
deps = [
"//base/third_party/dynamic_annotations",
"//base:base_static",
"//base:i18n",
"//net",
"//third_party/icu",
"//ui/events",
"//ui/events/devices",
"//ui/resources",
"//ui/strings",
"//url",
]
if (is_ios) {
sources += [
"l10n/l10n_util_mac.h",
"l10n/l10n_util_mac.mm",
]
}
if (toolkit_views) {
deps += [ "//ui/events" ]
}
if (use_x11 && use_aura) {
sources += [
"x/selection_owner.cc",
"x/selection_owner.h",
"x/selection_requestor.cc",
"x/selection_requestor.h",
"x/selection_utils.cc",
"x/selection_utils.h",
]
}
if (use_aura) {
deps += [ "//ui/events" ]
} else {
sources -= [
"cursor/cursor.cc",
"cursor/cursor.h",
"dragdrop/drag_utils_aura.cc",
]
}
if (use_x11) {
sources += [
"x/x11_foreign_window_manager.cc",
"x/x11_foreign_window_manager.h",
"x/x11_menu_list.cc",
"x/x11_menu_list.h",
"x/x11_util.cc",
"x/x11_util.h",
"x/x11_util_internal.h",
]
if (!is_chromeos) {
sources += [
"idle/idle_query_x11.cc",
"idle/idle_query_x11.h",
"idle/screensaver_window_finder_x11.cc",
"idle/screensaver_window_finder_x11.h",
]
configs += [ "//build/config/linux:xscrnsaver" ]
}
deps += [ "//ui/gfx/x" ]
}
if (!use_aura || !is_linux) {
sources -= [ "resource/resource_bundle_auralinux.cc" ]
}
if (use_aura && is_win) {
sources -= [ "dragdrop/drag_utils_aura.cc" ]
}
if (is_linux) {
configs += [
"//build/config/linux:fontconfig",
"//build/config/linux:glib",
]
}
if ((is_linux && !is_chromeos) || is_chromeos) {
if (!toolkit_views && !use_aura) {
sources -= [
"dragdrop/drag_utils.cc",
"dragdrop/drag_utils.h",
]
}
}
if (is_chromeos) {
deps += [ "//chromeos" ]
sources -= [ "idle/idle_linux.cc" ]
}
if (is_chromeos || (use_aura && is_linux && !use_x11)) {
sources += [
"dragdrop/os_exchange_data_provider_aura.cc",
"dragdrop/os_exchange_data_provider_aura.h",
]
}
libs = []
if (is_win) {
sources += [
"cursor/cursor_loader_win.cc",
"cursor/cursor_loader_win.h",
]
deps += [ "//third_party/wtl" ]
cflags = [
"/wd4324", # Structure was padded due to __declspec(align()), which is
# uninteresting.
]
ldflags = [
"/DELAYLOAD:d2d1.dll",
"/DELAYLOAD:d3d10_1.dll",
"/DELAYLOAD:dwmapi.dll",
]
libs += [
"d2d1.lib",
"d3d10_1.lib",
"dwmapi.lib",
"d2d1.lib",
"dwmapi.lib",
"oleacc.lib",
]
} else {
if (!use_aura) {
sources -= [
"view_prop.cc",
"view_prop.h",
]
}
}
if (is_mac) {
deps += [ "//third_party/mozilla" ]
sources -= [
"cursor/image_cursors.cc",
"cursor/image_cursors.h",
"dragdrop/drag_utils.cc",
"dragdrop/drag_utils.h",
]
libs += [
"Accelerate.framework",
"AudioUnit.framework",
"CoreVideo.framework",
]
}
if (use_x11) {
#'all_dependent_settings': {
#'ldflags': [
#'-L<(PRODUCT_DIR)',
#],
#},
configs += [ "//build/config/linux:x11" ]
}
if (use_aura) {
if (use_x11) {
sources += [
"cursor/cursor_loader_x11.cc",
"cursor/cursor_loader_x11.h",
"cursor/cursor_x11.cc",
]
if (!is_chromeos) {
# These Aura X11 files aren't used on ChromeOS.
sources += [
"dragdrop/os_exchange_data_provider_aurax11.cc",
"dragdrop/os_exchange_data_provider_aurax11.h",
]
}
}
}
if (use_ozone) {
sources += [
"cursor/cursor_loader_ozone.cc",
"cursor/cursor_loader_ozone.h",
"cursor/cursor_ozone.cc",
"cursor/ozone/bitmap_cursor_factory_ozone.cc",
"cursor/ozone/bitmap_cursor_factory_ozone.h",
]
deps += [
"//ui/events/ozone:events_ozone_layout",
"//ui/ozone:ozone_base",
]
}
if (!toolkit_views) {
sources -= [
"dragdrop/drag_drop_types.h",
"dragdrop/drop_target_event.cc",
"dragdrop/drop_target_event.h",
]
}
if (!toolkit_views && !use_aura) {
sources -= [
"dragdrop/os_exchange_data.cc",
"dragdrop/os_exchange_data.h",
"nine_image_painter_factory.cc",
"nine_image_painter_factory.h",
]
}
if (is_android) {
sources -= [
"cursor/image_cursors.cc",
"cursor/image_cursors.h",
"default_theme_provider.cc",
"dragdrop/drag_utils.cc",
"dragdrop/drag_utils.h",
"l10n/l10n_font_util.cc",
"models/button_menu_item_model.cc",
"models/dialog_model.cc",
"theme_provider.cc",
"touch/touch_editing_controller.cc",
"ui_base_types.cc",
]
deps += [
"//cc",
":ui_base_jni_headers",
]
libs += [ "jnigraphics" ]
}
if (is_android && is_android_webview_build) {
deps += [ "//ui/android:ui_java" ]
}
if (is_android && !use_aura) {
sources -= [ "cursor/cursor_android.cc" ]
}
# Aura clipboard.
if (use_aura) {
if (use_x11) {
sources += [ "clipboard/clipboard_aurax11.cc" ]
} else if (!is_win) {
# This file is used for all non-X11, non-Windows aura Builds.
sources += [ "clipboard/clipboard_aura.cc" ]
}
}
if (is_android || is_ios) {
sources -= [
"device_form_factor_desktop.cc",
"idle/idle.cc",
"idle/idle.h",
]
}
}
source_set("test_support") {
testonly = true
sources = [
"test/test_clipboard.cc",
"test/test_clipboard.h",
"test/ui_controls.h",
"test/ui_controls_aura.cc",
"test/ui_controls_internal_win.cc",
"test/ui_controls_internal_win.h",
"test/ui_controls_mac.mm",
"test/ui_controls_win.cc",
]
public_deps = [
":base",
]
deps = [
"//base",
"//skia",
"//testing/gtest",
"//ui/events:events_base",
"//ui/gfx",
"//ui/gfx/geometry",
]
if (build_ime) {
sources += [
"ime/dummy_input_method.cc",
"ime/dummy_input_method.h",
"ime/dummy_text_input_client.cc",
"ime/dummy_text_input_client.h",
]
deps += [ "//ui/base/ime" ]
}
if (!use_aura) {
sources -= [ "test/ui_controls_aura.cc" ]
} else if (is_win) {
sources -= [ "test/ui_controls_win.cc" ]
}
}
if (is_android) {
generate_jni("ui_base_jni_headers") {
sources = [
"../android/java/src/org/chromium/ui/base/Clipboard.java",
"../android/java/src/org/chromium/ui/base/DeviceFormFactor.java",
"../android/java/src/org/chromium/ui/base/LocalizationUtils.java",
"../android/java/src/org/chromium/ui/base/ResourceBundle.java",
"../android/java/src/org/chromium/ui/base/SelectFileDialog.java",
"../android/java/src/org/chromium/ui/base/TouchDevice.java",
]
jni_package = "base"
}
}
# GYP version: ui/base/ui_base_tests.gyp:ui_base_unittests
test("ui_base_unittests") {
sources = [
"l10n/l10n_util_mac_unittest.mm",
"l10n/l10n_util_unittest.cc",
"l10n/l10n_util_win_unittest.cc",
"l10n/time_format_unittest.cc",
"layout_unittest.cc",
"models/tree_node_iterator_unittest.cc",
"resource/data_pack_literal.cc",
"resource/data_pack_unittest.cc",
"resource/resource_bundle_unittest.cc",
"test/run_all_unittests.cc",
"test/test_clipboard_unittest.cc",
"user_activity/user_activity_detector_unittest.cc",
]
if (is_android) {
sources -= [ "user_activity/user_activity_detector_unittest.cc" ]
}
if (is_ios) {
# Compile this Mac file on iOS as well.
set_sources_assignment_filter([])
sources += [ "l10n/l10n_util_mac_unittest.mm" ]
set_sources_assignment_filter(sources_assignment_filter)
} else { # !is_ios
sources += [
"accelerators/accelerator_manager_unittest.cc",
"accelerators/menu_label_accelerator_util_linux_unittest.cc",
"clipboard/custom_data_helper_unittest.cc",
"cocoa/base_view_unittest.mm",
"cocoa/cocoa_base_utils_unittest.mm",
"cocoa/controls/blue_label_button_unittest.mm",
"cocoa/controls/hover_image_menu_button_unittest.mm",
"cocoa/controls/hyperlink_button_cell_unittest.mm",
"cocoa/controls/hyperlink_text_view_unittest.mm",
"cocoa/focus_tracker_unittest.mm",
"cocoa/fullscreen_window_manager_unittest.mm",
"cocoa/hover_image_button_unittest.mm",
"cocoa/menu_controller_unittest.mm",
"cocoa/nsgraphics_context_additions_unittest.mm",
"cocoa/nsview_additions_unittest.mm",
"cocoa/three_part_image_unittest.mm",
"cocoa/tracking_area_unittest.mm",
"models/list_model_unittest.cc",
"models/list_selection_model_unittest.cc",
"models/tree_node_model_unittest.cc",
"test/data/resource.h",
"text/bytes_formatting_unittest.cc",
"touch/selection_bound_unittest.cc",
"view_prop_unittest.cc",
"webui/web_ui_util_unittest.cc",
]
}
if (build_ime) {
sources += [
"ime/candidate_window_unittest.cc",
"ime/chromeos/character_composer_unittest.cc",
"ime/input_method_base_unittest.cc",
"ime/input_method_chromeos_unittest.cc",
"ime/remote_input_method_win_unittest.cc",
"ime/win/imm32_manager_unittest.cc",
"ime/win/tsf_input_scope_unittest.cc",
]
if (use_x11) {
sources += [ "ime/composition_text_util_pango_unittest.cc" ]
}
if (!use_x11 && is_chromeos) {
# These were already removed in the non-chromeos case.
sources -= [
"ime/chromeos/character_composer_unittest.cc",
"ime/input_method_chromeos_unittest.cc",
]
}
}
# TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
deps = [
"//base",
"//base/allocator",
"//base/test:test_support",
"//net",
"//skia",
"//testing/gmock",
"//testing/gtest",
"//third_party/icu",
"//ui/base",
"//ui/base:test_support",
"//ui/events:events_base",
"//ui/events:test_support",
"//ui/gfx:test_support",
"//ui/resources",
"//ui/resources:ui_test_pak",
"//ui/strings",
"//url",
]
if (is_ios) {
# TODO(GYP) lots of iOS-only steps for ui_base_unittests
}
if (build_ime) {
deps += [ "//ui/base/ime" ]
}
if (is_win) {
sources += [
"dragdrop/os_exchange_data_win_unittest.cc",
"win/hwnd_subclass_unittest.cc",
"win/open_file_name_win_unittest.cc",
]
ldflags = [
"/DELAYLOAD:d2d1.dll",
"/DELAYLOAD:d3d10_1.dll",
]
libs = [
"d2d1.lib",
"d3d10_1.lib",
"imm32.lib",
"oleacc.lib",
]
}
if (!is_win || !use_aura) {
sources -= [ "view_prop_unittest.cc" ]
}
if (is_android) {
apk_deps = [ "//chrome:resources" ]
}
if (use_pango) {
configs += [ "//build/config/linux:pangocairo" ]
}
if (use_x11) {
sources += [ "cursor/cursor_loader_x11_unittest.cc" ]
configs += [ "//build/config/linux:x11" ]
deps += [
"//ui/events/platform/x11",
"//ui/gfx/x",
]
datadeps = [
"//tools/xdisplaycheck",
]
}
if (is_mac) {
deps += [
"//third_party/mozilla",
#'ui_base_tests_bundle', TODO(GYP)
]
}
if (use_aura || toolkit_views) {
sources += [ "dragdrop/os_exchange_data_unittest.cc" ]
deps += [
"//ui/events",
"//ui/events/platform",
]
}
if (use_x11 && !is_chromeos) {
sources += [
"dragdrop/os_exchange_data_provider_aurax11_unittest.cc",
"x/selection_requestor_unittest.cc",
]
}
if (is_chromeos) {
deps += [
"//chromeos",
"//ui/events:dom4_keycode_converter",
]
}
}
# TODO(GYP) Mac (ui_base_tests_bundle)