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

component("views_examples_lib") {
  testonly = true

  sources = [
    "bubble_example.cc",
    "bubble_example.h",
    "button_example.cc",
    "button_example.h",
    "checkbox_example.cc",
    "checkbox_example.h",
    "combobox_example.cc",
    "combobox_example.h",
    "double_split_view_example.cc",
    "double_split_view_example.h",
    "example_base.cc",
    "example_base.h",
    "example_combobox_model.cc",
    "example_combobox_model.h",
    "examples_window.cc",
    "examples_window.h",
    "label_example.cc",
    "label_example.h",
    "link_example.cc",
    "link_example.h",
    "message_box_example.cc",
    "message_box_example.h",
    "menu_example.cc",
    "menu_example.h",
    "multiline_example.cc",
    "multiline_example.h",
    "progress_bar_example.cc",
    "progress_bar_example.h",
    "radio_button_example.cc",
    "radio_button_example.h",
    "scroll_view_example.cc",
    "scroll_view_example.h",
    "single_split_view_example.cc",
    "single_split_view_example.h",
    "slider_example.cc",
    "slider_example.h",
    "tabbed_pane_example.cc",
    "tabbed_pane_example.h",
    "table_example.cc",
    "table_example.h",
    "text_example.cc",
    "text_example.h",
    "textfield_example.cc",
    "textfield_example.h",
    "throbber_example.cc",
    "throbber_example.h",
    "tree_view_example.cc",
    "tree_view_example.h",
    "views_examples_export.h",
    "widget_example.cc",
    "widget_example.h",
  ]

  defines = [ "VIEWS_EXAMPLES_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//skia",
    "//third_party/icu",
    "//ui/base",
    "//ui/events",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/resources",
    "//ui/resources:ui_test_pak",
    "//ui/views",
  ]

  if (is_win) {
    deps += [ "//third_party/wtl" ]

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

  if (use_aura) {
    deps += [ "//ui/aura" ]
  }
}

executable("views_examples_exe") {
  testonly = true

  sources = [
    "examples_main.cc",
  ]

  deps = [
    ":views_examples_lib",
    "//base",
    "//base:i18n",
    "//ui/base",
    "//ui/compositor",
    "//ui/compositor:test_support",
    "//ui/gfx",
    "//ui/gl",
    "//ui/resources:ui_test_pak",
    "//ui/views",
    "//ui/views:test_support",
    "//ui/wm",
  ]

  if (use_aura) {
    deps += [ "//ui/aura" ]
  }
  if (use_x11) {
    deps += [ "//ui/gfx/x" ]
  }
}

component("views_examples_with_content_lib") {
  testonly = true
  sources = [
    "examples_window_with_content.cc",
    "examples_window_with_content.h",
    "views_examples_with_content_export.h",
    "webview_example.cc",
    "webview_example.h",
  ]

  defines = [ "VIEWS_EXAMPLES_WITH_CONTENT_IMPLEMENTATION" ]

  deps = [
    ":views_examples_lib",
    "//base",
    "//content",
    "//skia",
    "//ui/events",
    "//ui/views",
    "//ui/views/controls/webview",
    "//url",
  ]
}

executable("views_examples_with_content_exe") {
  testonly = true

  sources = [
    "examples_with_content_main_exe.cc",
  ]

  defines = [ "VIEWS_EXAMPLES_WITH_CONTENT_IMPLEMENTATION" ]

  deps = [
    ":views_examples_with_content_lib",
    "//base",
    "//content",
    "//ui/views_content_client",
  ]
}
