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

source_set("gpu") {
  sources = [
    "gl_context.cc",
    "gl_context.h",
    "gl_context_owner.cc",
    "gl_context_owner.h",
    "gl_texture.cc",
    "gl_texture.h",
    "mojo_context_support.cc",
    "mojo_context_support.h",
    "mojo_gles2_impl_autogen.cc",
    "mojo_gles2_impl_autogen.h",
    "texture_cache.cc",
    "texture_cache.h",
    "texture_uploader.cc",
    "texture_uploader.h",
  ]

  deps = [
    "//base",
    "//gpu/command_buffer/client:gles2_interface",
    "//gpu/command_buffer/common",
    "//mojo/environment:chromium",
    "//mojo/public/c/gles2",
    "//mojo/public/c/gpu:gpu_onscreen",
    "//mojo/public/c/system",
    "//mojo/public/cpp/application",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/environment",
    "//mojo/public/cpp/system",
    "//mojo/public/cpp/utility",
    "//mojo/public/interfaces/application",
    "//mojo/services/geometry/public/cpp",
    "//mojo/services/geometry/public/interfaces",
    "//mojo/services/gpu/public/interfaces",
    "//mojo/services/surfaces/public/cpp",
    "//mojo/services/surfaces/public/interfaces",
    "//mojo/services/surfaces/public/interfaces:surface_id",
  ]
}

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

  testonly = true

  sources = [
    "texture_cache_unittest.cc",
    "texture_uploader_unittest.cc",
  ]

  deps = [
    ":gpu",
    "//base",
    "//mojo/application",
    "//mojo/application:test_support",
    "//mojo/public/cpp/bindings:callback",
    "//mojo/services/geometry/public/interfaces",
    "//mojo/services/surfaces/public/interfaces:surface_id",
    "//testing/gtest",
  ]
}
