# Copyright 2015 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("//mojo/public/mojo_application.gni")

source_set("ui") {
  sources = [
    "base_view.cc",
    "base_view.h",
    "choreographer.cc",
    "choreographer.h",
    "input_handler.cc",
    "input_handler.h",
    "view_provider_app.cc",
    "view_provider_app.h",
  ]

  deps = [
    "//base",
    "//mojo/application",
    "//mojo/common",
    "//mojo/public/cpp/bindings",
    "//mojo/public/interfaces/application",
    "//mojo/services/gfx/composition/interfaces",
    "//mojo/services/ui/input/interfaces",
    "//mojo/services/ui/views/interfaces",
  ]
}

source_set("content") {
  sources = [
    "content_viewer_app.cc",
    "content_viewer_app.h",
  ]

  deps = [
    ":ui",
    "//base",
    "//mojo/application",
    "//mojo/common",
    "//mojo/public/cpp/bindings",
    "//mojo/services/content_handler/interfaces",
    "//mojo/services/ui/views/interfaces",
  ]
}

source_set("gl") {
  sources = [
    "gl_renderer.cc",
    "gl_renderer.h",
    "gl_view.cc",
    "gl_view.h",
  ]

  deps = [
    ":ui",
    "//base",
    "//mojo/application",
    "//mojo/common",
    "//mojo/gpu",
    "//mojo/public/cpp/bindings",
    "//mojo/services/geometry/interfaces",
    "//mojo/services/gfx/composition/interfaces",
    "//mojo/services/ui/views/interfaces",
  ]
}

source_set("ganesh") {
  sources = [
    "ganesh_renderer.cc",
    "ganesh_renderer.h",
    "ganesh_view.cc",
    "ganesh_view.h",
  ]

  deps = [
    ":gl",
    ":ui",
    "//base",
    "//mojo/application",
    "//mojo/common",
    "//mojo/gpu",
    "//mojo/public/cpp/bindings",
    "//mojo/services/geometry/interfaces",
    "//mojo/services/gfx/composition/interfaces",
    "//mojo/services/ui/views/interfaces",
    "//mojo/skia",
    "//skia",
  ]
}

mojo_native_application("apptests") {
  output_name = "ui_apptests"

  testonly = true

  sources = [
    "gl_renderer_apptest.cc",
  ]

  deps = [
    ":gl",
    ":ui",
    "//base",
    "//mojo/application",
    "//mojo/application:test_support",
    "//mojo/gpu",
    "//mojo/public/cpp/bindings:callback",
    "//mojo/services/geometry/interfaces",
    "//mojo/services/gfx/composition/interfaces",
    "//testing/gtest",
  ]
}
