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

static_library("client") {
  sources = [
    "chromoting_client.cc",
    "chromoting_client.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",
    "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",
    "queued_task_poster.cc",
    "queued_task_poster.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 = [
    "//remoting/client/audio",
    "//remoting/client/notification",
    "//remoting/codec:decoder",
    "//remoting/protocol",
    "//third_party/libyuv",
    "//third_party/webrtc/modules/desktop_capture:primitives",
    "//ui/events:dom_keycode_converter",
  ]

  libs = []

  if (is_nacl) {
    sources -= [ "client_telemetry_logger.cc" ]
  } else {
    sources += [
      "chromoting_client_runtime.cc",
      "chromoting_client_runtime.h",
      "chromoting_session.cc",
      "chromoting_session.h",
      "dual_buffer_frame_consumer.cc",
      "dual_buffer_frame_consumer.h",
    ]
    deps += [
      "//mojo/core/embedder",
      "//remoting/base:authorization",
      "//remoting/client/input",
      "//remoting/client/ui",
      "//services/network:network_service",
      "//services/network/public/mojom",
    ]

    if (!is_chromeos) {
      # 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",
    "queued_task_poster_unittest.cc",
    "software_video_renderer_unittest.cc",
  ]

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

  deps = [
    ":client",
    "//remoting/proto",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/webrtc/rtc_base:rtc_base_approved",
  ]
}
