# 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.

source_set("ui") {
  sources = [
    "fling_animation.cc",
    "fling_animation.h",
    "fling_tracker.cc",
    "fling_tracker.h",
  ]

  deps = [
    ":ui_manipulation",
  ]

  public_deps = [
    "//remoting/proto",
    "//third_party/webrtc/rtc_base:rtc_base_approved",
  ]

  if (!is_chromeos) {
    deps += [ "//remoting/client/display" ]
  }
}

source_set("ui_manipulation") {
  sources = [
    "desktop_viewport.cc",
    "desktop_viewport.h",
    "view_matrix.cc",
    "view_matrix.h",
  ]

  deps = []

  public_deps = [
    "//remoting/proto",
    "//third_party/webrtc/rtc_base:rtc_base_approved",
  ]
}

source_set("unit_tests") {
  testonly = true

  sources = [
    "desktop_viewport_unittest.cc",
    "fling_animation_unittest.cc",
  ]

  configs += [ "//remoting/build/config:version" ]

  deps = [
    ":ui",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
