# 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")

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_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/system_ui_resource_manager.h",
    "android/ui_base_jni_registrar.cc",
    "android/ui_base_jni_registrar.h",
    "android/view_android.cc",
    "android/view_android.h",
    "android/window_android.cc",
    "android/window_android.h",
    "android/window_android_compositor.h",
    "android/window_android_observer.h",
    "base_window.cc",
    "base_window.h",
    "clipboard/clipboard.cc",
    "clipboard/clipboard.h",
    "clipboard/clipboard_android.cc",
    "clipboard/clipboard_android_initialization.h",
    "clipboard/clipboard_constants.cc",
    "clipboard/clipboard_mac.mm",
    "clipboard/clipboard_types.h",
    "clipboard/clipboard_util_win.cc",
    "clipboard/clipboard_util_win.h",
    "clipboard/clipboard_win.cc",
    "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/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_android.cc",
    "device_form_factor_android.h",
    "device_form_factor_desktop.cc",
    "device_form_factor_ios.mm",
    "device_form_factor.h",
    "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",
    "hit_test.h",
    "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",
    "page_transition_types_list.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/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",
    "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/dpi_setup.cc",
    "win/dpi_setup.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/open_file_name_win.cc",
    "win/open_file_name_win.h",
    "win/message_box_win.cc",
    "win/message_box_win.h",
    "win/mouse_wheel_util.cc",
    "win/mouse_wheel_util.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 (use_ozone) {
    sources += [ "touch/touch_device_ozone.cc" ]
  } else if (use_aura && use_x11) { 
    sources += [ "touch/touch_device_aurax11.cc" ]
  } else {
    # Empty implementation for all other cases.
    sources += [ "touch/touch_device.cc" ]
  }

  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/resources",
    "//ui/strings",
    "//url",
  ]

  if (build_ime) {
    if (!is_android) {
      deps += [
        "//ui/events",
      ]
    }

    sources += [
      "ime/candidate_window.cc",
      "ime/candidate_window.h",
      "ime/chromeos/character_composer.cc",
      "ime/chromeos/character_composer.h",
      "ime/chromeos/ime_bridge.cc",
      "ime/chromeos/ime_bridge.h",
      "ime/chromeos/ime_keymap.cc",
      "ime/chromeos/ime_keymap.h",
      "ime/chromeos/mock_ime_candidate_window_handler.cc",
      "ime/chromeos/mock_ime_candidate_window_handler.h",
      "ime/chromeos/mock_ime_engine_handler.cc",
      "ime/chromeos/mock_ime_engine_handler.h",
      "ime/chromeos/mock_ime_input_context_handler.cc",
      "ime/chromeos/mock_ime_input_context_handler.h",
      "ime/composition_text.cc",
      "ime/composition_text.h",
      "ime/composition_text_util_pango.cc",
      "ime/composition_text_util_pango.h",
      "ime/composition_underline.h",
      "ime/dummy_input_method_delegate.cc",
      "ime/dummy_input_method_delegate.h",
      "ime/infolist_entry.cc",
      "ime/infolist_entry.h",
      "ime/input_method.h",
      "ime/input_method_auralinux.cc",
      "ime/input_method_auralinux.h",
      "ime/input_method_base.cc",
      "ime/input_method_base.h",
      "ime/input_method_chromeos.cc",
      "ime/input_method_chromeos.h",
      "ime/input_method_delegate.h",
      "ime/input_method_factory.cc",
      "ime/input_method_factory.h",
      "ime/input_method_initializer.cc",
      "ime/input_method_initializer.h",
      "ime/input_method_mac.h",
      "ime/input_method_mac.mm",
      "ime/input_method_minimal.cc",
      "ime/input_method_minimal.h",
      "ime/input_method_observer.h",
      "ime/input_method_win.cc",
      "ime/input_method_win.h",
      "ime/linux/fake_input_method_context.cc",
      "ime/linux/fake_input_method_context.h",
      "ime/linux/fake_input_method_context_factory.cc",
      "ime/linux/fake_input_method_context_factory.h",
      "ime/linux/linux_input_method_context.h",
      "ime/linux/linux_input_method_context_factory.cc",
      "ime/linux/linux_input_method_context_factory.h",
      "ime/mock_input_method.cc",
      "ime/mock_input_method.h",
      "ime/remote_input_method_delegate_win.h",
      "ime/remote_input_method_win.cc",
      "ime/remote_input_method_win.h",
      "ime/text_input_client.cc",
      "ime/text_input_client.h",
      "ime/text_input_focus_manager.cc",
      "ime/text_input_focus_manager.h",
      "ime/text_input_type.h",
      "ime/win/imm32_manager.cc",
      "ime/win/imm32_manager.h",
      "ime/win/tsf_input_scope.cc",
      "ime/win/tsf_input_scope.h",
    ]

    if (!use_aura || (!is_linux && !use_ozone)) {
      sources -= [
        "ime/input_method_auralinux.cc",
        "ime/input_method_auralinux.h",
      ]
    }

    if (!toolkit_views && !use_aura) {
      sources -= [
        "ime/input_method_factory.cc",
        "ime/input_method_factory.h",
        "ime/input_method_minimal.cc",
        "ime/input_method_minimal.h",
      ]
    }

    if (is_chromeos) {
      deps += [
        "//chromeos",
      ]
    }

    if (use_pango) {
      configs += [ "//build/config/linux:pangocairo" ]
    } else {
      sources -= [
        "ime/composition_text_util_pango.cc",
        "ime/composition_text_util_pango.h",
      ]
    }
  }

  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",
    ]
    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 || (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 = [
      "/wd4267",  # TODO(jschuh): C4267: http://crbug.com/167187 size_t -> int.
      "/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",
      "imm32.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/ozone:ozone_base",
    ]
  }

  if (!toolkit_views) {
    sources -= [
      "dragdrop/drag_drop_types.h",
      "dragdrop/drop_target_event.cc",
      "dragdrop/drop_target_event.h",
      "dragdrop/os_exchange_data.cc",
      "dragdrop/os_exchange_data.h",
      "nine_image_painter_factory.cc",
      "nine_image_painter_factory.h",
    ]
  }

  if (is_android) {
    sources -= [
      "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 += [
      ":ui_base_jni_headers",
    ]

    libs += [
      "jnigraphics",
    ]
  }

  if (is_android && is_android_webview_build) {
    deps += [
      #TODO(GYP): port this component to GN.
      #"//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",
    ]
  }
}

source_set("test_support") {
  testonly = true
  sources = [
    "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",
    ]
  }
}

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",
      "../android/java/src/org/chromium/ui/base/ViewAndroid.java",
      "../android/java/src/org/chromium/ui/base/WindowAndroid.java",
    ]
    jni_package = "base"
  }
}

# TODO(GYP): Make this work on Android and reenable it.
if (!is_android) {
# TODO(tfarina): Rename this target to ui_base_unittests.
# In order to do this we will need to keep this target, add a dummy
# ui_base_unittests target that just points to ui_unittests, change
# buildbot code to reference the new 'ui_base_unittests' target.
# After buildbot is updated, we can make the changes in Chromium and
# remove 'ui_unittests' target. crbug.com/331829
# GYP version: ui/base/ui_base_tests.gyp:ui_unittests
test("ui_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",
  ]

  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/tracking_area_unittest.mm",
      "dragdrop/os_exchange_data_provider_aurax11_unittest.cc",
      "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",
      "view_prop_unittest.cc",
      "webui/web_ui_util_unittest.cc",
      "x/selection_requestor_unittest.cc",
    ]

    if (!use_x11) {
      if (is_chromeos) {
        # These were already removed in the chromeos case.
        sources -= [
          "ime/chromeos/character_composer_unittest.cc",
          "ime/input_method_chromeos_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" ]
    }
  }

  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_unittests
  }

  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",
    ]

    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    cflags = [ "/wd4267" ]
  }

  if (is_android) {
    deps += [
      #"testing/android/native_test.gyp:native_test_native_code"  TODO(GYP)
    ]
  }

  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_win || !use_aura) {
    sources -= [
      "view_prop_unittest.cc"
    ]
  }

  if (is_mac) {
    deps += [
      "//third_party/mozilla",
      #'ui_unittests_bundle',  TODO(GYP)
    ]
  }

  if (use_aura || toolkit_views) {
    sources += [
      "dragdrop/os_exchange_data_unittest.cc"
    ]

    deps += [
      "//ui/events",
      "//ui/events/platform",
    ]
  }

  if (is_chromeos) {
    sources += [
      "../chromeos/touch_exploration_controller_unittest.cc",
    ]
    sources -= [
      "dragdrop/os_exchange_data_provider_aurax11_unittest.cc",
      "x/selection_requestor_unittest.cc",
    ]
    deps += [
      "//ui/aura:test_support",
      "//ui/events:gesture_detection",
      "//ui/chromeos:ui_chromeos",
      #'../chromeos/chromeos.gyp:chromeos',  TODO(GYP)
    ]
  }
}
}
# TODO(GYP) Mac (ui_unittest_bundle) and Android (ui_unittests_apk).
