# 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/chromeos/ui_mode.gni")

static_library("client") {
  sources = [
    "chromoting_client.cc",
    "chromoting_client.h",
    "chromoting_client_runtime.cc",
    "chromoting_client_runtime.h",
    "chromoting_session.cc",
    "chromoting_session.h",
    "client_context.cc",
    "client_context.h",
    "client_telemetry_logger.cc",
    "client_telemetry_logger.h",
    "client_user_interface.h",
    "connect_to_host_info.cc",
    "connect_to_host_info.h",
    "cursor_shape_stub_proxy.cc",
    "cursor_shape_stub_proxy.h",
    "dual_buffer_frame_consumer.cc",
    "dual_buffer_frame_consumer.h",
    "empty_cursor_filter.cc",
    "empty_cursor_filter.h",
    "feedback_data.cc",
    "feedback_data.h",
    "host_experiment_sender.cc",
    "host_experiment_sender.h",
    "in_memory_log_handler.cc",
    "in_memory_log_handler.h",
    "software_video_renderer.cc",
    "software_video_renderer.h",
  ]

  configs += [
    "//build/config/compiler:wexit_time_destructors",
    "//remoting/build/config:version",
    "//remoting/build/config:enable_webrtc_remoting_client",
  ]

  public_deps = [ "//remoting/base" ]

  deps = [
    "//jingle:webrtc_glue",
    "//mojo/core/embedder",
    "//remoting/base:authorization",
    "//remoting/client/audio",
    "//remoting/client/input",
    "//remoting/client/notification",
    "//remoting/client/ui",
    "//remoting/client/ui:ui_manipulation",
    "//remoting/codec:decoder",
    "//remoting/protocol",
    "//remoting/signaling",
    "//services/network:network_service",
    "//services/network/public/cpp",
    "//services/network/public/mojom",
    "//third_party/libjingle_xmpp:rtc_xmllite",
    "//third_party/libyuv",
    "//third_party/webrtc_overrides:webrtc_component",
    "//ui/events:dom_keycode_converter",
  ]

  libs = []

  if (!is_chromeos_ash && !is_chromeos_lacros) {
    # GestureInterpreter depends on //remoting/client/display, which currently
    # doesn't build on CrOS. crbug.com/869578
    sources += [
      "gesture_interpreter.cc",
      "gesture_interpreter.h",
    ]

    deps += [ "//remoting/client/display" ]
  }

  if (is_android) {
    libs += [ "android" ]
  }
}

source_set("unit_tests") {
  testonly = true

  sources = [
    "chromoting_client_runtime_unittest.cc",
    "client_telemetry_logger_unittest.cc",
    "dual_buffer_frame_consumer_unittest.cc",
    "empty_cursor_filter_unittest.cc",
    "software_video_renderer_unittest.cc",
  ]

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

  deps = [
    ":client",
    "//base/test:test_support",
    "//remoting/codec:encoder",
    "//remoting/proto",
    "//remoting/protocol",
    "//remoting/protocol:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/webrtc_overrides:webrtc_component",
  ]
}
