# Copyright 2017 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("//components/viz/viz.gni")

viz_component("client") {
  sources = [
    "client_resource_provider.cc",
    "client_resource_provider.h",
    "frame_eviction_manager.cc",
    "frame_eviction_manager.h",
    "frame_evictor.cc",
    "frame_evictor.h",
    "hit_test_data_provider.h",
    "hit_test_data_provider_draw_quad.cc",
    "hit_test_data_provider_draw_quad.h",
    "local_surface_id_provider.cc",
    "local_surface_id_provider.h",
    "shared_bitmap_reporter.cc",
    "shared_bitmap_reporter.h",
  ]

  defines = [ "VIZ_CLIENT_IMPLEMENTATION" ]

  public_deps = [
    "//base",
    "//components/viz/common",
    "//mojo/public/cpp/system",
    "//skia",
  ]
  deps = [
    "//cc/base",
    "//gpu/command_buffer/client:gles2_interface",
    "//gpu/command_buffer/client:raster_interface",
  ]
}

viz_source_set("unit_tests") {
  testonly = true
  sources = [
    "client_resource_provider_unittest.cc",
    "hit_test_data_provider_draw_quad_unittest.cc",
  ]

  deps = [
    ":client",
    "//base",
    "//base/test:test_support",
    "//components/viz/client",
    "//components/viz/test:test_support",
    "//mojo/public/cpp/bindings",
    "//services/viz/public/interfaces",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
