# 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/buildflag_header.gni")
import("//build/config/features.gni")
import("//build/config/jumbo.gni")
import("//build/config/ui.gni")
import("//components/vector_icons/vector_icons.gni")
import("//testing/test.gni")
import("//ui/base/ui_features.gni")
import("//ui/ozone/ozone.gni")
import("//ui/views/features.gni")

config("flags") {
  defines = [ "TOOLKIT_VIEWS=1" ]
}

aggregate_vector_icons("views_vector_icons") {
  icon_directory = "vector_icons"

  icons = [
    "checkbox_active.icon",
    "checkbox_normal.icon",
    "close.icon",
    "ic_close.icon",
    "info.icon",
    "launch.icon",
    "menu_check.icon",
    "menu_drop_arrow.icon",
    "menu_radio_empty.icon",
    "menu_radio_selected.icon",
    "new_incognito_window.icon",
    "new_tab.icon",
    "new_window.icon",
    "open.icon",
    "options.icon",
    "pin.icon",
    "radio_button_active.icon",
    "radio_button_normal.icon",
    "submenu_arrow.icon",
    "uninstall.icon",
    "unpin.icon",
  ]
}

buildflag_header("buildflags") {
  header = "buildflags.h"
  flags =
      [ "ENABLE_NATIVE_WINDOW_NAV_BUTTONS=$enable_native_window_nav_buttons" ]
}

jumbo_component("views") {
  all_dependent_configs = [ ":flags" ]

  public = [
    # TODO(ccameron): Move these sources to the views_bridge_mac component
    "../views_bridge_mac/bridge_factory_impl.h",
    "../views_bridge_mac/bridged_native_widget_impl.h",
    "../views_bridge_mac/native_widget_mac_nswindow.h",
    "../views_bridge_mac/window_touch_bar_delegate.h",
    "accessibility/ax_event_manager.h",
    "accessibility/ax_event_observer.h",
    "accessibility/ax_virtual_view.h",
    "accessibility/view_accessibility.h",
    "accessibility/view_accessibility_utils.h",
    "accessible_pane_view.h",
    "animation/bounds_animator.h",
    "animation/bounds_animator_observer.h",
    "animation/flood_fill_ink_drop_ripple.h",
    "animation/ink_drop.h",
    "animation/ink_drop_animation_ended_reason.h",
    "animation/ink_drop_highlight.h",
    "animation/ink_drop_highlight_observer.h",
    "animation/ink_drop_host_view.h",
    "animation/ink_drop_impl.h",
    "animation/ink_drop_mask.h",
    "animation/ink_drop_observer.h",
    "animation/ink_drop_painted_layer_delegates.h",
    "animation/ink_drop_ripple.h",
    "animation/ink_drop_ripple_observer.h",
    "animation/ink_drop_state.h",
    "animation/ink_drop_stub.h",
    "animation/ink_drop_util.h",
    "animation/scroll_animator.h",
    "animation/square_ink_drop_ripple.h",
    "background.h",
    "border.h",
    "bubble/bubble_border.h",
    "bubble/bubble_dialog_delegate_view.h",
    "bubble/bubble_frame_view.h",
    "bubble/info_bubble.h",
    "bubble/tooltip_icon.h",
    "button_drag_utils.h",
    "cocoa/bridge_factory_host.h",
    "cocoa/bridged_native_widget_host_impl.h",
    "color_chooser/color_chooser_listener.h",
    "color_chooser/color_chooser_view.h",
    "context_menu_controller.h",
    "controls/animated_image_view.h",
    "controls/button/button.h",
    "controls/button/checkbox.h",
    "controls/button/image_button.h",
    "controls/button/image_button_factory.h",
    "controls/button/label_button.h",
    "controls/button/label_button_border.h",
    "controls/button/md_text_button.h",
    "controls/button/menu_button.h",
    "controls/button/menu_button_event_handler.h",
    "controls/button/menu_button_listener.h",
    "controls/button/radio_button.h",
    "controls/button/toggle_button.h",
    "controls/combobox/combobox.h",
    "controls/combobox/combobox_listener.h",
    "controls/focus_ring.h",
    "controls/focusable_border.h",
    "controls/image_view.h",
    "controls/image_view_base.h",
    "controls/label.h",
    "controls/link.h",
    "controls/link_listener.h",
    "controls/menu/menu_closure_animation_mac.h",
    "controls/menu/menu_cocoa_watcher_mac.h",
    "controls/menu/menu_config.h",
    "controls/menu/menu_controller.h",
    "controls/menu/menu_controller_delegate.h",
    "controls/menu/menu_delegate.h",
    "controls/menu/menu_host.h",
    "controls/menu/menu_host_root_view.h",
    "controls/menu/menu_image_util.h",
    "controls/menu/menu_insertion_delegate_win.h",
    "controls/menu/menu_item_view.h",
    "controls/menu/menu_model_adapter.h",
    "controls/menu/menu_runner.h",
    "controls/menu/menu_runner_handler.h",
    "controls/menu/menu_runner_impl.h",
    "controls/menu/menu_runner_impl_adapter.h",
    "controls/menu/menu_runner_impl_cocoa.h",
    "controls/menu/menu_runner_impl_interface.h",
    "controls/menu/menu_scroll_view_container.h",
    "controls/menu/menu_separator.h",
    "controls/menu/menu_types.h",
    "controls/menu/native_menu_win.h",
    "controls/menu/submenu_view.h",
    "controls/message_box_view.h",
    "controls/native/native_view_host.h",
    "controls/native/native_view_host_mac.h",
    "controls/native/native_view_host_wrapper.h",
    "controls/prefix_delegate.h",
    "controls/prefix_selector.h",
    "controls/progress_bar.h",
    "controls/resize_area.h",
    "controls/resize_area_delegate.h",
    "controls/scroll_view.h",
    "controls/scrollbar/base_scroll_bar.h",
    "controls/scrollbar/base_scroll_bar_button.h",
    "controls/scrollbar/base_scroll_bar_thumb.h",
    "controls/scrollbar/cocoa_scroll_bar.h",
    "controls/scrollbar/overlay_scroll_bar.h",
    "controls/scrollbar/scroll_bar.h",
    "controls/scrollbar/scroll_bar_views.h",
    "controls/separator.h",
    "controls/slider.h",
    "controls/styled_label.h",
    "controls/styled_label_listener.h",
    "controls/tabbed_pane/tabbed_pane.h",
    "controls/tabbed_pane/tabbed_pane_listener.h",
    "controls/table/table_grouper.h",
    "controls/table/table_header.h",
    "controls/table/table_utils.h",
    "controls/table/table_view.h",
    "controls/table/table_view_observer.h",
    "controls/textfield/textfield.h",
    "controls/textfield/textfield_controller.h",
    "controls/textfield/textfield_model.h",
    "controls/throbber.h",
    "controls/tree/tree_view.h",
    "controls/tree/tree_view_controller.h",
    "controls/tree/tree_view_drawing_provider.h",
    "controls/views_text_services_context_menu.h",
    "debug_utils.h",
    "drag_controller.h",
    "drag_utils.h",
    "event_monitor.h",
    "event_monitor_mac.h",
    "event_utils.h",
    "focus/external_focus_tracker.h",
    "focus/focus_manager.h",
    "focus/focus_manager_delegate.h",
    "focus/focus_manager_factory.h",
    "focus/focus_search.h",
    "focus/widget_focus_manager.h",
    "layout/box_layout.h",
    "layout/fill_layout.h",
    "layout/flex_layout.h",
    "layout/flex_layout_types.h",
    "layout/grid_layout.h",
    "layout/layout_manager.h",
    "layout/layout_provider.h",
    "linux_ui/device_scale_factor_observer.h",
    "linux_ui/linux_ui.h",
    "linux_ui/status_icon_linux.h",
    "linux_ui/window_button_order_observer.h",
    "masked_targeter_delegate.h",
    "metrics.h",
    "mouse_constants.h",
    "mouse_watcher.h",
    "mouse_watcher_view_host.h",
    "native_cursor.h",
    "native_theme_delegate.h",
    "paint_info.h",
    "painter.h",
    "rect_based_targeting_utils.h",
    "repeat_controller.h",
    "round_rect_painter.h",
    "selection_controller.h",
    "selection_controller_delegate.h",
    "shadow_border.h",
    "style/platform_style.h",
    "style/typography.h",
    "style/typography_provider.h",
    "view.h",
    "view_constants.h",
    "view_model.h",
    "view_model_utils.h",
    "view_observer.h",
    "view_properties.h",
    "view_targeter.h",
    "view_targeter_delegate.h",
    "view_tracker.h",
    "views_delegate.h",
    "views_export.h",
    "views_switches.h",
    "views_touch_selection_controller_factory.h",
    "widget/drop_helper.h",
    "widget/native_widget.h",
    "widget/native_widget_delegate.h",
    "widget/native_widget_mac.h",
    "widget/native_widget_private.h",
    "widget/root_view.h",
    "widget/root_view_targeter.h",
    "widget/tooltip_manager.h",
    "widget/widget.h",
    "widget/widget_aura_utils.h",
    "widget/widget_delegate.h",
    "widget/widget_deletion_observer.h",
    "widget/widget_observer.h",
    "widget/widget_removals_observer.h",
    "widget/widget_utils.h",
    "widget/widget_utils_mac.h",
    "window/caption_button_layout_constants.h",
    "window/caption_button_types.h",
    "window/client_view.h",
    "window/custom_frame_view.h",
    "window/dialog_client_view.h",
    "window/dialog_delegate.h",
    "window/dialog_observer.h",
    "window/frame_background.h",
    "window/frame_buttons.h",
    "window/frame_caption_button.h",
    "window/hit_test_utils.h",
    "window/native_frame_view.h",
    "window/non_client_view.h",
    "window/window_button_order_provider.h",
    "window/window_resize_utils.h",
    "window/window_resources.h",
    "window/window_shape.h",
    "word_lookup_client.h",
  ]

  sources = [
    # TODO(ccameron): Move these sources to the views_bridge_mac component
    "../views_bridge_mac/bridged_native_widget_impl.mm",
    "../views_bridge_mac/native_widget_mac_nswindow.mm",
    "accessibility/ax_event_manager.cc",
    "accessibility/ax_event_observer.cc",
    "accessibility/ax_virtual_view.cc",
    "accessibility/view_accessibility.cc",
    "accessibility/view_accessibility_utils.cc",
    "accessible_pane_view.cc",
    "animation/bounds_animator.cc",
    "animation/flood_fill_ink_drop_ripple.cc",
    "animation/ink_drop.cc",
    "animation/ink_drop_animation_ended_reason.cc",
    "animation/ink_drop_highlight.cc",
    "animation/ink_drop_host_view.cc",
    "animation/ink_drop_impl.cc",
    "animation/ink_drop_mask.cc",
    "animation/ink_drop_painted_layer_delegates.cc",
    "animation/ink_drop_ripple.cc",
    "animation/ink_drop_state.cc",
    "animation/ink_drop_stub.cc",
    "animation/ink_drop_util.cc",
    "animation/scroll_animator.cc",
    "animation/square_ink_drop_ripple.cc",
    "background.cc",
    "border.cc",
    "bubble/bubble_border.cc",
    "bubble/bubble_dialog_delegate_view.cc",
    "bubble/bubble_frame_view.cc",
    "bubble/footnote_container_view.cc",
    "bubble/info_bubble.cc",
    "bubble/tooltip_icon.cc",
    "button_drag_utils.cc",
    "color_chooser/color_chooser_view.cc",
    "controls/animated_image_view.cc",
    "controls/button/button.cc",
    "controls/button/checkbox.cc",
    "controls/button/image_button.cc",
    "controls/button/image_button_factory.cc",
    "controls/button/label_button.cc",
    "controls/button/label_button_border.cc",
    "controls/button/md_text_button.cc",
    "controls/button/menu_button.cc",
    "controls/button/menu_button_event_handler.cc",
    "controls/button/radio_button.cc",
    "controls/button/toggle_button.cc",
    "controls/combobox/combobox.cc",
    "controls/focus_ring.cc",
    "controls/focusable_border.cc",
    "controls/image_view.cc",
    "controls/image_view_base.cc",
    "controls/label.cc",
    "controls/link.cc",
    "controls/menu/display_change_listener_mac.cc",
    "controls/menu/menu_closure_animation_mac.mm",
    "controls/menu/menu_cocoa_watcher_mac.mm",
    "controls/menu/menu_config.cc",
    "controls/menu/menu_config_chromeos.cc",
    "controls/menu/menu_config_linux.cc",
    "controls/menu/menu_config_mac.mm",
    "controls/menu/menu_config_win.cc",
    "controls/menu/menu_controller.cc",
    "controls/menu/menu_delegate.cc",
    "controls/menu/menu_host.cc",
    "controls/menu/menu_host_root_view.cc",
    "controls/menu/menu_image_util.cc",
    "controls/menu/menu_item_view.cc",
    "controls/menu/menu_model_adapter.cc",
    "controls/menu/menu_runner.cc",
    "controls/menu/menu_runner_impl.cc",
    "controls/menu/menu_runner_impl_adapter.cc",
    "controls/menu/menu_runner_impl_cocoa.mm",
    "controls/menu/menu_scroll_view_container.cc",
    "controls/menu/menu_separator.cc",
    "controls/menu/native_menu_win.cc",
    "controls/menu/submenu_view.cc",
    "controls/message_box_view.cc",
    "controls/native/native_view_host.cc",
    "controls/native/native_view_host_mac.mm",
    "controls/prefix_selector.cc",
    "controls/progress_bar.cc",
    "controls/resize_area.cc",
    "controls/scroll_view.cc",
    "controls/scrollbar/base_scroll_bar.cc",
    "controls/scrollbar/base_scroll_bar_button.cc",
    "controls/scrollbar/base_scroll_bar_thumb.cc",
    "controls/scrollbar/cocoa_scroll_bar.mm",
    "controls/scrollbar/overlay_scroll_bar.cc",
    "controls/scrollbar/scroll_bar.cc",
    "controls/scrollbar/scroll_bar_views.cc",
    "controls/separator.cc",
    "controls/slider.cc",
    "controls/styled_label.cc",
    "controls/tabbed_pane/tabbed_pane.cc",
    "controls/table/table_header.cc",
    "controls/table/table_utils.cc",
    "controls/table/table_view.cc",
    "controls/textfield/textfield.cc",
    "controls/textfield/textfield_controller.cc",
    "controls/textfield/textfield_model.cc",
    "controls/throbber.cc",
    "controls/tree/tree_view.cc",
    "controls/tree/tree_view_controller.cc",
    "controls/tree/tree_view_drawing_provider.cc",
    "controls/views_text_services_context_menu.cc",
    "controls/views_text_services_context_menu_base.cc",
    "controls/views_text_services_context_menu_base.h",
    "controls/views_text_services_context_menu_mac.mm",
    "debug_utils.cc",
    "drag_utils.cc",
    "drag_utils_mac.mm",
    "event_monitor_mac.mm",
    "event_utils.cc",
    "focus/external_focus_tracker.cc",
    "focus/focus_manager.cc",
    "focus/focus_manager_factory.cc",
    "focus/focus_search.cc",
    "focus/widget_focus_manager.cc",
    "layout/box_layout.cc",
    "layout/fill_layout.cc",
    "layout/flex_layout.cc",
    "layout/flex_layout_types.cc",
    "layout/flex_layout_types_internal.cc",
    "layout/grid_layout.cc",
    "layout/layout_manager.cc",
    "layout/layout_provider.cc",
    "linux_ui/linux_ui.cc",
    "linux_ui/status_icon_linux.cc",
    "linux_ui/window_button_order_provider.cc",
    "masked_targeter_delegate.cc",
    "metrics.cc",
    "metrics_mac.cc",
    "mouse_watcher.cc",
    "mouse_watcher_view_host.cc",
    "native_cursor_mac.mm",
    "paint_info.cc",
    "painter.cc",
    "rect_based_targeting_utils.cc",
    "repeat_controller.cc",
    "round_rect_painter.cc",
    "selection_controller.cc",
    "shadow_border.cc",
    "style/platform_style.cc",
    "style/platform_style_mac.mm",
    "style/typography.cc",
    "style/typography_provider.cc",
    "view.cc",
    "view_constants.cc",
    "view_model.cc",
    "view_model_utils.cc",
    "view_properties.cc",
    "view_targeter.cc",
    "view_targeter_delegate.cc",
    "view_tracker.cc",
    "views_delegate.cc",
    "views_switches.cc",
    "views_touch_selection_controller_factory_mac.cc",
    "widget/drop_helper.cc",
    "widget/native_widget_mac.mm",
    "widget/native_widget_private.cc",
    "widget/root_view.cc",
    "widget/root_view_targeter.cc",
    "widget/tooltip_manager.cc",
    "widget/widget.cc",
    "widget/widget_aura_utils.cc",
    "widget/widget_delegate.cc",
    "widget/widget_deletion_observer.cc",
    "widget/widget_utils.cc",
    "widget/widget_utils_mac.mm",
    "window/caption_button_layout_constants.cc",
    "window/client_view.cc",
    "window/custom_frame_view.cc",
    "window/dialog_client_view.cc",
    "window/dialog_delegate.cc",
    "window/frame_background.cc",
    "window/frame_caption_button.cc",
    "window/hit_test_utils.cc",
    "window/native_frame_view.cc",
    "window/non_client_view.cc",
    "window/window_button_order_provider.cc",
    "window/window_resize_utils.cc",
    "window/window_shape.cc",
  ]

  # Other targets in this file (e.g. tests) get access to the internal headers.
  friend = [ ":*" ]

  # Internal sources. TODO(https://crbug.com/871123): Move more headers from
  # public into this list, along with the implementation file.
  sources += [
    # TODO(ccameron): Move these sources to the views_bridge_mac component
    "../views_bridge_mac/bridge_factory_impl.mm",
    "../views_bridge_mac/bridged_content_view.h",
    "../views_bridge_mac/bridged_content_view.mm",
    "../views_bridge_mac/bridged_content_view_touch_bar.mm",
    "../views_bridge_mac/browser_native_widget_window_mac.h",
    "../views_bridge_mac/browser_native_widget_window_mac.mm",
    "../views_bridge_mac/cocoa_window_move_loop.h",
    "../views_bridge_mac/cocoa_window_move_loop.mm",
    "../views_bridge_mac/native_widget_mac_frameless_nswindow.h",
    "../views_bridge_mac/native_widget_mac_frameless_nswindow.mm",
    "../views_bridge_mac/views_nswindow_delegate.h",
    "../views_bridge_mac/views_nswindow_delegate.mm",
    "../views_bridge_mac/views_scrollbar_bridge.h",
    "../views_bridge_mac/views_scrollbar_bridge.mm",
    "cocoa/bridge_factory_host.cc",
    "cocoa/bridged_native_widget_host_impl.mm",
    "cocoa/drag_drop_client_mac.h",
    "cocoa/drag_drop_client_mac.mm",
    "cocoa/text_input_host.h",
    "cocoa/text_input_host.mm",
    "cocoa/tooltip_manager_mac.h",
    "cocoa/tooltip_manager_mac.mm",
    "controls/button/label_button_label.cc",
    "controls/button/label_button_label.h",
    "controls/menu/menu_pre_target_handler.h",
  ]

  sources += get_target_outputs(":views_vector_icons")
  configs += [ "//build/config:precompiled_headers" ]
  defines = [ "VIEWS_IMPLEMENTATION" ]

  deps = [
    ":buildflags",
    "//base:i18n",
    "//base/third_party/dynamic_annotations",
    "//cc/paint",
    "//mojo/public/cpp/bindings",
    "//services/ws/public/mojom",
    "//skia",
    "//third_party/icu",
    "//ui/accessibility",
    "//ui/base/clipboard",
    "//ui/display",
    "//ui/native_theme",
    "//ui/native_theme:native_theme_browser",
    "//ui/resources",
    "//ui/strings",
    "//ui/views/resources",
    "//url",
  ]

  public_deps = [
    ":views_vector_icons",
    "//base",
    "//components/vector_icons",
    "//ui/accessibility:ax_enums_mojo",
    "//ui/base",
    "//ui/base/clipboard",
    "//ui/base/ime",
    "//ui/compositor",
    "//ui/display",
    "//ui/events",
    "//ui/events:events_base",
    "//ui/events/platform",
    "//ui/gfx",
    "//ui/gfx/animation",
    "//ui/gfx/geometry",
    "//ui/views/resources",
  ]

  if (use_x11) {
    deps += [ "//ui/display/util" ]
  }

  if (is_linux && !is_chromeos) {
    sources -= [ "window/window_button_order_provider.cc" ]
    deps += [ "//ui/shell_dialogs" ]
  } else {
    public -= [
      "linux_ui/linux_ui.h",
      "linux_ui/window_button_order_observer.h",
    ]
    sources -= [
      "linux_ui/linux_ui.cc",
      "linux_ui/window_button_order_provider.cc",
    ]
  }

  if (is_chromeos) {
    public -= [ "linux_ui/status_icon_linux.h" ]
    sources -= [
      "controls/menu/menu_config_linux.cc",
      "linux_ui/status_icon_linux.cc",
    ]
    sources += [ "widget/desktop_aura/desktop_window_tree_host_chromeos.cc" ]
  }

  if (is_win) {
    public += [
      "widget/widget_hwnd_utils.h",
      "win/fullscreen_handler.h",
      "win/hwnd_message_handler.h",
      "win/hwnd_message_handler_delegate.h",
      "win/hwnd_util.h",
      "win/pen_event_processor.h",
      "win/scoped_fullscreen_visibility.h",
      "win/windows_session_change_observer.h",
    ]
    sources += [
      "widget/widget_hwnd_utils.cc",
      "win/fullscreen_handler.cc",
      "win/hwnd_message_handler.cc",
      "win/hwnd_util_aurawin.cc",
      "win/pen_event_processor.cc",
      "win/scoped_fullscreen_visibility.cc",
      "win/windows_session_change_observer.cc",
    ]
    libs = [
      "dwmapi.lib",
      "imm32.lib",
      "oleacc.lib",
      "uiautomationcore.lib",
      "wtsapi32.lib",
    ]
    ldflags = [ "/DELAYLOAD:user32.dll" ]
    deps += [
      "//third_party/iaccessible2",
      "//third_party/wtl",
    ]
  }

  if (use_ozone) {
    deps += [ "//ui/ozone" ]
  }

  if (use_x11) {
    configs += [
      "//build/config/linux:x11",
      "//build/config/linux:xrandr",
    ]
    deps += [
      "//ui/events/devices",
      "//ui/events/devices/x11",
      "//ui/events/platform/x11",
      "//ui/gfx/x",
    ]
  }

  if (use_aura) {
    public += [
      "accessibility/accessibility_alert_window.h",
      "accessibility/ax_aura_obj_cache.h",
      "accessibility/ax_aura_obj_wrapper.h",
      "accessibility/ax_aura_window_utils.h",
      "accessibility/ax_root_obj_wrapper.h",
      "accessibility/ax_tree_source_views.h",
      "accessibility/ax_view_obj_wrapper.h",
      "accessibility/ax_widget_obj_wrapper.h",
      "accessibility/ax_window_obj_wrapper.h",
      "controls/native/native_view_host_aura.h",
      "corewm/cursor_height_provider_win.h",
      "corewm/tooltip.h",
      "corewm/tooltip_aura.h",
      "corewm/tooltip_controller.h",
      "corewm/tooltip_win.h",
      "event_monitor_aura.h",
      "touchui/touch_selection_controller_impl.h",
      "touchui/touch_selection_menu_runner_views.h",
      "touchui/touch_selection_menu_views.h",
      "view_constants_aura.h",
      "widget/desktop_aura/desktop_capture_client.h",
      "widget/desktop_aura/desktop_drop_target_win.h",
      "widget/desktop_aura/desktop_event_client.h",
      "widget/desktop_aura/desktop_focus_rules.h",
      "widget/desktop_aura/desktop_native_cursor_manager.h",
      "widget/desktop_aura/desktop_native_widget_aura.h",
      "widget/desktop_aura/desktop_screen.h",
      "widget/desktop_aura/desktop_screen_position_client.h",
      "widget/desktop_aura/desktop_window_tree_host.h",
      "widget/focus_manager_event_handler.h",
      "widget/native_widget_aura.h",
      "widget/tooltip_manager_aura.h",
      "widget/window_reorderer.h",
    ]

    sources += [
      "accessibility/accessibility_alert_window.cc",
      "accessibility/ax_aura_obj_cache.cc",
      "accessibility/ax_aura_obj_wrapper.cc",
      "accessibility/ax_aura_window_utils.cc",
      "accessibility/ax_root_obj_wrapper.cc",
      "accessibility/ax_tree_source_views.cc",
      "accessibility/ax_view_obj_wrapper.cc",
      "accessibility/ax_widget_obj_wrapper.cc",
      "accessibility/ax_window_obj_wrapper.cc",
      "controls/menu/display_change_listener_aura.cc",
      "controls/menu/menu_pre_target_handler_aura.cc",
      "controls/menu/menu_pre_target_handler_aura.h",
      "controls/native/native_view_host_aura.cc",
      "corewm/cursor_height_provider_win.cc",
      "corewm/tooltip_aura.cc",
      "corewm/tooltip_controller.cc",
      "corewm/tooltip_win.cc",
      "drag_utils_aura.cc",
      "event_monitor_aura.cc",
      "metrics_aura.cc",
      "native_cursor_aura.cc",
      "touchui/touch_selection_controller_impl.cc",
      "touchui/touch_selection_menu_runner_views.cc",
      "touchui/touch_selection_menu_views.cc",
      "view_constants_aura.cc",
      "views_touch_selection_controller_factory_aura.cc",
      "widget/desktop_aura/desktop_capture_client.cc",
      "widget/desktop_aura/desktop_drop_target_win.cc",
      "widget/desktop_aura/desktop_event_client.cc",
      "widget/desktop_aura/desktop_focus_rules.cc",
      "widget/desktop_aura/desktop_native_cursor_manager.cc",
      "widget/desktop_aura/desktop_native_widget_aura.cc",
      "widget/desktop_aura/desktop_screen.cc",
      "widget/desktop_aura/desktop_screen_position_client.cc",
      "widget/desktop_aura/desktop_window_tree_host.cc",
      "widget/focus_manager_event_handler.cc",
      "widget/native_widget_aura.cc",
      "widget/tooltip_manager_aura.cc",
      "widget/window_reorderer.cc",
    ]
    deps += [
      "//services/ws/public/mojom",
      "//ui/aura",
      "//ui/events",
      "//ui/platform_window",
      "//ui/platform_window/platform_window_handler",
      "//ui/touch_selection",
      "//ui/wm",
      "//ui/wm/public",
    ]
    if (!is_chromeos) {
      if (use_x11) {
        public += [
          "widget/desktop_aura/desktop_drag_drop_client_aurax11.h",
          "widget/desktop_aura/desktop_screen_x11.h",
          "widget/desktop_aura/desktop_window_tree_host_observer_x11.h",
          "widget/desktop_aura/desktop_window_tree_host_x11.h",
          "widget/desktop_aura/x11_desktop_handler.h",
          "widget/desktop_aura/x11_desktop_handler_observer.h",
          "widget/desktop_aura/x11_desktop_window_move_client.h",
          "widget/desktop_aura/x11_move_loop.h",
          "widget/desktop_aura/x11_move_loop_delegate.h",
          "widget/desktop_aura/x11_topmost_window_finder.h",
          "widget/desktop_aura/x11_whole_screen_move_loop.h",
          "widget/desktop_aura/x11_window_event_filter.h",
        ]
        sources += [
          "widget/desktop_aura/desktop_drag_drop_client_aurax11.cc",
          "widget/desktop_aura/desktop_screen_x11.cc",
          "widget/desktop_aura/desktop_window_tree_host_x11.cc",
          "widget/desktop_aura/x11_desktop_handler.cc",
          "widget/desktop_aura/x11_desktop_window_move_client.cc",
          "widget/desktop_aura/x11_topmost_window_finder.cc",
          "widget/desktop_aura/x11_whole_screen_move_loop.cc",
          "widget/desktop_aura/x11_window_event_filter.cc",
        ]
        if (use_atk) {
          sources += [
            "accessibility/view_ax_platform_node_delegate_auralinux.cc",
            "accessibility/view_ax_platform_node_delegate_auralinux.h",
          ]
          configs += [ "//build/config/linux/atk" ]
        }
      } else if (is_win) {
        public += [ "widget/desktop_aura/desktop_window_tree_host_win.h" ]
        sources += [
          "widget/desktop_aura/desktop_drag_drop_client_win.cc",
          "widget/desktop_aura/desktop_drag_drop_client_win.h",
          "widget/desktop_aura/desktop_screen_win.cc",
          "widget/desktop_aura/desktop_screen_win.h",
          "widget/desktop_aura/desktop_window_tree_host_win.cc",
        ]
        deps += [ "//ui/events:dom_keyboard_layout" ]
      } else if (use_ozone) {
        sources += [
          "widget/desktop_aura/desktop_drag_drop_client_ozone.cc",
          "widget/desktop_aura/desktop_drag_drop_client_ozone.h",
          "widget/desktop_aura/desktop_screen_ozone.cc",
          "widget/desktop_aura/desktop_screen_ozone.h",
        ]
      }
      if (is_linux) {
        sources += [
          "style/platform_style_linux.cc",
          "widget/desktop_aura/window_event_filter.cc",
          "widget/desktop_aura/window_event_filter.h",
        ]
      }
      if ((is_linux && !use_x11) || is_fuchsia) {
        public += [ "widget/desktop_aura/desktop_window_tree_host_platform.h" ]
        sources +=
            [ "widget/desktop_aura/desktop_window_tree_host_platform.cc" ]
      }
    }
  }

  if (is_mac) {
    sources -= [ "controls/views_text_services_context_menu.cc" ]
    sources += [
      "controls/menu/menu_pre_target_handler_mac.h",
      "controls/menu/menu_pre_target_handler_mac.mm",
    ]
    deps += [
      "//components/crash/core/common",
      "//ui/accelerated_widget_mac",
      "//ui/events:dom_keycode_converter",
      "//ui/views_bridge_mac",
    ]
    public_deps += [ "//ui/views_bridge_mac:mojo" ]
    libs = [
      "AppKit.framework",
      "CoreGraphics.framework",
      "Foundation.framework",
      "QuartzCore.framework",  # Required by bridged_native_widget.mm.
    ]
  }

  if (has_native_accessibility) {
    sources += [
      "accessibility/view_ax_platform_node_delegate.cc",
      "accessibility/view_ax_platform_node_delegate.h",
      "accessibility/view_ax_platform_node_delegate_mac.h",
      "accessibility/view_ax_platform_node_delegate_mac.mm",
      "accessibility/view_ax_platform_node_delegate_win.cc",
      "accessibility/view_ax_platform_node_delegate_win.h",
    ]
  }

  if (is_fuchsia) {
    sources += [ "controls/menu/menu_config_fuchsia.cc" ]
  }
}

jumbo_source_set("test_support") {
  testonly = true
  sources = [
    "animation/test/flood_fill_ink_drop_ripple_test_api.cc",
    "animation/test/flood_fill_ink_drop_ripple_test_api.h",
    "animation/test/ink_drop_highlight_test_api.cc",
    "animation/test/ink_drop_highlight_test_api.h",
    "animation/test/ink_drop_host_view_test_api.cc",
    "animation/test/ink_drop_host_view_test_api.h",
    "animation/test/ink_drop_impl_test_api.cc",
    "animation/test/ink_drop_impl_test_api.h",
    "animation/test/ink_drop_ripple_test_api.cc",
    "animation/test/ink_drop_ripple_test_api.h",
    "animation/test/ink_drop_utils.cc",
    "animation/test/square_ink_drop_ripple_test_api.cc",
    "animation/test/square_ink_drop_ripple_test_api.h",
    "animation/test/test_ink_drop.cc",
    "animation/test/test_ink_drop.h",
    "animation/test/test_ink_drop_animation_observer_helper.h",
    "animation/test/test_ink_drop_highlight_observer.cc",
    "animation/test/test_ink_drop_highlight_observer.h",
    "animation/test/test_ink_drop_host.cc",
    "animation/test/test_ink_drop_host.h",
    "animation/test/test_ink_drop_ripple_observer.cc",
    "animation/test/test_ink_drop_ripple_observer.h",
    "controls/textfield/textfield_test_api.cc",
    "controls/textfield/textfield_test_api.h",
    "test/capture_tracking_view.cc",
    "test/capture_tracking_view.h",
    "test/combobox_test_api.cc",
    "test/combobox_test_api.h",
    "test/desktop_test_views_delegate.h",
    "test/desktop_test_views_delegate_mac.mm",
    "test/event_generator_delegate_mac.h",
    "test/event_generator_delegate_mac.mm",
    "test/focus_manager_test.cc",
    "test/focus_manager_test.h",
    "test/menu_runner_test_api.cc",
    "test/menu_runner_test_api.h",
    "test/menu_test_utils.cc",
    "test/menu_test_utils.h",
    "test/native_widget_factory.cc",
    "test/native_widget_factory.h",
    "test/platform_test_helper.cc",
    "test/platform_test_helper.h",
    "test/platform_test_helper_cocoa.mm",
    "test/scoped_views_test_helper.cc",
    "test/scoped_views_test_helper.h",
    "test/slider_test_api.cc",
    "test/slider_test_api.h",
    "test/test_layout_manager.cc",
    "test/test_layout_manager.h",
    "test/test_layout_provider.cc",
    "test/test_layout_provider.h",
    "test/test_platform_native_widget.h",
    "test/test_views.cc",
    "test/test_views.h",
    "test/test_views_delegate.h",
    "test/test_views_delegate_mac.mm",
    "test/test_widget_observer.cc",
    "test/test_widget_observer.h",
    "test/views_interactive_ui_test_base.cc",
    "test/views_interactive_ui_test_base.h",
    "test/views_test_base.cc",
    "test/views_test_base.h",
    "test/views_test_helper.cc",
    "test/views_test_helper.h",
    "test/views_test_helper_mac.h",
    "test/views_test_helper_mac.mm",
    "test/widget_test.cc",
    "test/widget_test.h",
    "test/widget_test_api.cc",
    "test/widget_test_api.h",
    "test/widget_test_mac.mm",
    "test/x11_property_change_waiter.cc",
    "test/x11_property_change_waiter.h",
    "views_test_suite.cc",
    "views_test_suite.h",
  ]

  configs += [ "//build/config:precompiled_headers" ]

  deps = [
    ":views",
    "//base",
    "//base/test:test_support",
    "//gpu/ipc/service",
    "//ipc:test_support",
    "//mojo/core/embedder",
    "//skia",
    "//testing/gtest",
    "//ui/base",
    "//ui/base:test_support",
    "//ui/base/clipboard:clipboard_test_support",
    "//ui/base/ime",
    "//ui/compositor",
    "//ui/compositor:test_support",
    "//ui/events",
    "//ui/events:events_base",
    "//ui/events:test_support",
    "//ui/events/platform",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl:test_support",
  ]

  if (enable_mus) {
    sources += [
      "test/platform_test_helper_mus.cc",
      "test/platform_test_helper_mus.h",
    ]

    deps += [
      "//services/service_manager",
      "//services/service_manager/public/cpp",
      "//services/service_manager/public/mojom",
      "//services/ws/common",
      "//services/ws/ime/test_ime_driver/public/cpp:manifest",
      "//services/ws/public/mojom",
      "//services/ws/test_ws:manifest",
      "//testing/gtest",
      "//ui/compositor:test_support",
      "//ui/gl:test_support",
      "//ui/resources",
      "//ui/resources:ui_test_pak",
    ]

    data_deps = [
      "//services/ws/ime/test_ime_driver",
      "//ui/resources:ui_test_pak_data",
    ]
  }

  if (use_aura) {
    sources += [
      "corewm/test/tooltip_aura_test_api.cc",
      "corewm/test/tooltip_aura_test_api.h",
      "corewm/tooltip_controller_test_helper.cc",
      "corewm/tooltip_controller_test_helper.h",
      "test/desktop_test_views_delegate_aura.cc",
      "test/test_views_delegate_aura.cc",
      "test/views_test_helper_aura.cc",
      "test/views_test_helper_aura.h",
      "test/widget_test_aura.cc",
    ]
    deps += [
      "//ui/aura",
      "//ui/aura:test_support",
      "//ui/views/mus",
      "//ui/wm",
      "//ui/wm/public",
    ]
    if (use_x11) {
      sources += [
        "test/desktop_screen_x11_test_api.cc",
        "test/desktop_screen_x11_test_api.h",
        "test/test_desktop_screen_x11.cc",
        "test/test_desktop_screen_x11.h",
        "test/ui_controls_factory_desktop_aurax11.cc",
        "test/ui_controls_factory_desktop_aurax11.h",
      ]
    }
  }
  if (use_x11) {
    deps += [ "//ui/gfx/x" ]
  }
  if (ozone_platform_x11) {
    deps += [ "//ui/base/x" ]
  }
  if (use_ozone || !use_x11) {
    sources -= [
      "test/x11_property_change_waiter.cc",
      "test/x11_property_change_waiter.h",
    ]
  }
}

test("views_unittests") {
  sources = [
    "accessible_pane_view_unittest.cc",
    "animation/bounds_animator_unittest.cc",
    "animation/flood_fill_ink_drop_ripple_unittest.cc",
    "animation/ink_drop_highlight_unittest.cc",
    "animation/ink_drop_host_view_unittest.cc",
    "animation/ink_drop_impl_unittest.cc",
    "animation/ink_drop_ripple_unittest.cc",
    "animation/ink_drop_unittest.cc",
    "animation/square_ink_drop_ripple_unittest.cc",
    "border_unittest.cc",
    "bubble/bubble_border_unittest.cc",
    "bubble/bubble_dialog_delegate_view_unittest.cc",
    "bubble/bubble_frame_view_unittest.cc",
    "cocoa/bridged_native_widget_unittest.mm",
    "cocoa/cocoa_mouse_capture_unittest.mm",
    "cocoa/drag_drop_client_mac_unittest.mm",
    "controls/button/button_unittest.cc",
    "controls/button/checkbox_unittest.cc",
    "controls/button/image_button_factory_unittest.cc",
    "controls/button/image_button_unittest.cc",
    "controls/button/label_button_label_unittest.cc",
    "controls/button/label_button_unittest.cc",
    "controls/button/menu_button_unittest.cc",
    "controls/button/radio_button_unittest.cc",
    "controls/button/toggle_button_unittest.cc",
    "controls/combobox/combobox_unittest.cc",
    "controls/image_view_unittest.cc",
    "controls/label_unittest.cc",
    "controls/menu/menu_controller_unittest.cc",
    "controls/menu/menu_item_view_unittest.cc",
    "controls/menu/menu_model_adapter_unittest.cc",
    "controls/menu/menu_runner_cocoa_unittest.mm",
    "controls/menu/menu_runner_unittest.cc",
    "controls/menu/submenu_view_unittest.cc",
    "controls/native/native_view_host_mac_unittest.mm",
    "controls/native/native_view_host_test_base.cc",
    "controls/native/native_view_host_test_base.h",
    "controls/native/native_view_host_unittest.cc",
    "controls/prefix_selector_unittest.cc",
    "controls/progress_bar_unittest.cc",
    "controls/resize_area_unittest.cc",
    "controls/scroll_view_unittest.cc",
    "controls/scrollbar/scrollbar_unittest.cc",
    "controls/separator_unittest.cc",
    "controls/slider_unittest.cc",
    "controls/styled_label_unittest.cc",
    "controls/tabbed_pane/tabbed_pane_accessibility_mac_unittest.mm",
    "controls/tabbed_pane/tabbed_pane_unittest.cc",
    "controls/table/table_utils_unittest.cc",
    "controls/table/table_view_unittest.cc",
    "controls/table/test_table_model.cc",
    "controls/table/test_table_model.h",
    "controls/textfield/textfield_model_unittest.cc",
    "controls/textfield/textfield_unittest.cc",
    "controls/tree/tree_view_unittest.cc",
    "event_monitor_unittest.cc",
    "focus/focus_manager_unittest.cc",
    "focus/focus_traversal_unittest.cc",
    "layout/box_layout_unittest.cc",
    "layout/fill_layout_unittest.cc",
    "layout/flex_layout_unittest.cc",
    "layout/grid_layout_unittest.cc",
    "paint_info_unittest.cc",
    "rect_based_targeting_utils_unittest.cc",
    "run_all_unittests_main.cc",
    "selection_controller_unittest.cc",
    "test/widget_test_unittest.cc",
    "view_model_unittest.cc",
    "view_model_utils_unittest.cc",
    "view_targeter_unittest.cc",
    "view_tracker_unittest.cc",
    "view_unittest.cc",
    "view_unittest_mac.mm",
    "widget/ax_native_widget_mac_unittest.mm",
    "widget/desktop_widget_unittest.cc",
    "widget/native_widget_mac_unittest.mm",
    "widget/native_widget_unittest.cc",
    "widget/root_view_unittest.cc",
    "widget/widget_unittest.cc",
    "window/custom_frame_view_unittest.cc",
    "window/dialog_client_view_unittest.cc",
    "window/dialog_delegate_unittest.cc",
    "window/frame_caption_button_unittest.cc",
    "window/hit_test_utils_unittest.cc",
    "window/non_client_view_unittest.cc",
    "window/window_resize_utils_unittest.cc",
  ]

  configs += [ "//build/config:precompiled_headers" ]

  deps = [
    ":test_support",
    ":views",
    "//base",
    "//base:i18n",
    "//base/test:test_support",
    "//cc",
    "//cc/paint",
    "//components/vector_icons",
    "//components/viz/common",
    "//mojo/core/embedder",
    "//services/ws/public/mojom",
    "//skia",
    "//testing/gtest",
    "//third_party/icu",
    "//ui/accessibility",
    "//ui/base",
    "//ui/base:test_support",
    "//ui/base/clipboard",
    "//ui/base/ime",
    "//ui/compositor:test_support",
    "//ui/events:dom_keycode_converter",
    "//ui/events:events_base",
    "//ui/events:test_support",
    "//ui/events/platform",
    "//ui/gfx:test_support",
    "//ui/gfx/geometry",
    "//ui/gl:test_support",
    "//ui/native_theme",
    "//ui/native_theme:test_support",
    "//ui/platform_window/platform_window_handler",
    "//ui/resources",
    "//ui/resources:ui_test_pak",
    "//ui/strings",
    "//url",
  ]

  data_deps = [
    "//ui/resources:ui_test_pak_data",
  ]

  if (enable_mus) {
    sources += [
      "mus/ax_remote_host_unittest.cc",
      "mus/ax_tree_source_mus_unittest.cc",
      "mus/desktop_window_tree_host_mus_unittest.cc",
      "mus/screen_mus_unittest.cc",
    ]

    deps += [
      "//services/ws/test_ws:mojom",
      "//ui/accessibility/mojom",
      "//ui/views/mus",
      "//ui/views/mus/remote_view:tests",
    ]

    data_deps += [
      "//services/ws/ime/test_ime_driver",
      "//services/ws/test_ws",
    ]
  }

  if (is_win) {
    public_deps = [
      "//build/win:default_exe_manifest",
      "//third_party/iaccessible2",
      "//third_party/wtl",
    ]

    libs = [
      "imm32.lib",
      "oleacc.lib",
      "comctl32.lib",
    ]

    sources += [
      "accessibility/view_ax_platform_node_delegate_win_unittest.cc",
      "win/pen_event_processor_unittest.cc",
    ]
  }

  if (has_native_accessibility) {
    sources += [
      "accessibility/ax_virtual_view_unittest.cc",
      "accessibility/view_ax_platform_node_delegate_unittest.cc",
    ]
  }

  if (is_mac) {
    # views_unittests not yet compiling on Mac. http://crbug.com/378134
    sources -= [ "controls/native/native_view_host_unittest.cc" ]
    public_deps = [
      "//ui/accelerated_widget_mac",
      "//ui/views_bridge_mac:views_bridge_mac",
    ]
  }

  if (use_aura) {
    sources += [
      "accessibility/ax_aura_obj_cache_unittest.cc",
      "accessibility/ax_aura_window_utils_unittest.cc",
      "accessibility/ax_tree_source_views_unittest.cc",
      "controls/native/native_view_host_aura_unittest.cc",
      "corewm/tooltip_controller_unittest.cc",
      "touchui/touch_selection_controller_impl_unittest.cc",
      "touchui/touch_selection_menu_runner_views_unittest.cc",
      "view_unittest_aura.cc",
      "widget/desktop_aura/desktop_focus_rules_unittest.cc",
      "widget/desktop_aura/desktop_native_widget_aura_unittest.cc",
      "widget/native_widget_aura_unittest.cc",
      "widget/window_reorderer_unittest.cc",
    ]
    deps += [
      "//ui/accessibility:test_support",
      "//ui/aura",
      "//ui/aura:test_support",
      "//ui/touch_selection",
      "//ui/wm",
      "//ui/wm/public",
    ]

    if (is_mac) {
      # views_unittests not yet compiling on Mac. http://crbug.com/378134
      sources -= [ "widget/window_reorderer_unittest.cc" ]
    }

    if (use_x11) {
      configs += [
        "//build/config/linux:x11",
        "//build/config/linux:xext",
      ]
      deps += [
        "//ui/events/devices",
        "//ui/events/platform/x11",
        "//ui/gfx/x",
      ]
    }

    if (!is_chromeos) {
      if (use_x11) {
        sources += [
          "widget/desktop_aura/desktop_drag_drop_client_aurax11_unittest.cc",
          "widget/desktop_aura/desktop_screen_x11_unittest.cc",
          "widget/desktop_aura/desktop_window_tree_host_x11_unittest.cc",
        ]
      } else if (is_linux) {
        sources += [
          "widget/desktop_aura/desktop_drag_drop_client_ozone_unittest.cc",
          "widget/desktop_aura/desktop_window_tree_host_platform_unittest.cc",
        ]
      }
    }
  }
}

# This target is added as a dependency of browser interactive_ui_tests. It must
# be source_set, otherwise the linker will drop the tests as dead code.
source_set("views_interactive_ui_tests") {
  testonly = true

  sources = [
    "widget/widget_interactive_uitest.cc",
  ]

  deps = [
    ":test_support",
    ":views",
    "//base",
    "//base/test:test_support",
    "//mojo/core/embedder",
    "//skia",
    "//testing/gtest",
    "//ui/base:test_support",
    "//ui/compositor",
    "//ui/events:test_support",
    "//ui/gl:test_support",
    "//ui/resources",
    "//ui/resources:ui_test_pak",
    "//ui/strings",
  ]

  if (is_win) {
    sources += [ "accessibility/ax_system_caret_win_interactive_uitest.cc" ]
  }

  if (is_mac) {
    sources += [
      "cocoa/bridged_native_widget_interactive_uitest.mm",
      "widget/native_widget_mac_interactive_uitest.mm",
    ]
  }

  if (use_aura) {
    sources += [
      "corewm/desktop_capture_controller_unittest.cc",
      "widget/native_widget_aura_interactive_uitest.cc",
    ]

    deps += [
      "//ui/aura",
      "//ui/aura:test_support",
      "//ui/wm",
      "//ui/wm/public",
    ]

    if (!is_chromeos && (is_linux && !use_x11)) {
      sources += [ "widget/desktop_aura/desktop_window_tree_host_platform_interactive_uitest.cc" ]
    }

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

  if (use_x11) {
    sources += [
      "widget/desktop_aura/desktop_window_tree_host_x11_interactive_uitest.cc",
      "widget/desktop_aura/x11_topmost_window_finder_interactive_uitest.cc",
    ]
    deps += [ "//ui/events/platform/x11:x11" ]
  }

  if (is_chromeos) {
    sources -= [ "corewm/desktop_capture_controller_unittest.cc" ]
  }

  if (enable_mus) {
    sources += [
      "mus/clipboard_unittest.cc",
      "mus/drag_interactive_uitest.cc",
    ]

    deps += [
      "//mojo/core/embedder",
      "//services/ws/public/mojom",
      "//testing/gmock",
      "//ui/base/ime",
      "//ui/base/mojo:lib",
      "//ui/events:events_base",
      "//ui/touch_selection",
      "//ui/views/mus",
    ]

    data_deps = [
      "//services/ws/test_ws",
    ]
  }
}

test("views_perftests") {
  sources = [
    "controls/label_perftest.cc",
    "views_perftests.cc",
  ]

  deps = [
    ":test_support",
    ":views",
    "//base/test:test_support",
    "//cc/base:base",
    "//mojo/core/embedder",
    "//testing/perf",
    "//ui/resources:ui_test_pak",
  ]

  data_deps = [
    "//ui/resources:ui_test_pak_data",
    "//testing:run_perf_test",
  ]
}
