# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/c++/c++.gni")
import("//build/config/chromeos/ui_mode.gni")
import("//remoting/build/config/remoting_build.gni")

group("all_tests") {
  testonly = true
}

if (enable_me2me_host) {
  executable("remoting_user_session") {
    sources = [ "remoting_user_session.cc" ]

    deps = [ "//base" ]

    libs = [ "pam" ]
  }

  copy("remoting_me2me_host_copy_script") {
    sources = [ "linux_me2me_host.py" ]
    outputs = [ "$root_build_dir/remoting/chrome-remote-desktop" ]
  }

  copy("remoting_me2me_host_copy_host_wrapper") {
    sources = [ "remoting_me2me_host_wrapper.sh" ]
    outputs = [ "$root_build_dir/remoting/chrome-remote-desktop-host" ]
  }

  copy("remoting_me2me_host_copy_user_session_wrapper") {
    sources = [ "remoting_user_session_wrapper.sh" ]
    outputs = [ "$root_build_dir/remoting/user-session" ]
  }

  copy("remoting_me2me_host_copy_user_session") {
    sources = [ "$root_build_dir/remoting_user_session" ]
    outputs = [ "$root_build_dir/remoting/{{source_file_part}}" ]
    deps = [ ":remoting_user_session" ]
    if (is_component_build) {
      sources += [
        "$root_build_dir/libbase.so",
        "$root_build_dir/libthird_party_boringssl.so",
      ]
      deps += [ "//base:base" ]
      if (use_custom_libcxx) {
        sources += [ "$root_build_dir/libc++.so" ]
        deps += [ "//buildtools/third_party/libc++" ]
      }
    }
  }

  remoting_localize("url_forwarder_desktop_entry") {
    sources = [ "crd-url-forwarder.desktop.jinja2" ]
    locale_list = remoting_locales_without_pseudolocales
    locale_dir = resources_locale_dir
    output = "$root_build_dir/remoting/{{source_name_part}}"
  }

  copy("remoting_me2me_host_copy_setup_url_forwarder_script") {
    sources = [ "configure_url_forwarder.py" ]
    outputs = [ "$root_build_dir/remoting/setup-url-forwarder" ]
  }

  group("remoting_dev_me2me_host") {
    deps = [
      ":remoting_me2me_host_copy_host_wrapper",
      ":remoting_me2me_host_copy_script",
      ":remoting_me2me_host_copy_setup_url_forwarder_script",
      ":remoting_me2me_host_copy_user_session",
      ":remoting_me2me_host_copy_user_session_wrapper",
      ":remoting_native_messaging_host",
      ":url_forwarder_desktop_entry",
      "//remoting/host:remoting_me2me_host",
      "//remoting/host/remote_open_url",
      "//remoting/host/webauthn:remote_webauthn",
    ]
  }
}

if (is_linux) {
  source_set("wayland") {
    sources = [
      "wayland_utils.cc",
      "wayland_utils.h",
    ]
    deps = [ "//base" ]
  }
}

if (remoting_use_x11) {
  source_set("x11") {
    sources = [
      "unicode_to_keysym.cc",
      "unicode_to_keysym.h",
      "x11_character_injector.cc",
      "x11_character_injector.h",
      "x11_keyboard_impl.cc",
      "x11_keyboard_impl.h",
      "x11_util.cc",
      "x11_util.h",
      "x_server_clipboard.cc",
      "x_server_clipboard.h",
    ]
    public_deps = [ "//ui/gfx/x" ]
    deps = [
      "//base",
      "//remoting/base",
      "//remoting/base:logging",
      "//third_party/webrtc_overrides:webrtc_component",
    ]
  }
}

if (!is_chromeos) {
  executable("remoting_native_messaging_host") {
    configs += [ "//build/config/compiler:wexit_time_destructors" ]

    sources =
        [ "//remoting/host/setup/me2me_native_messaging_host_entry_point.cc" ]

    deps = [
      "//remoting/host:remoting_core",
      "//remoting/host/setup:native_messaging_host_main_headers",
    ]
  }
}

source_set("unit_tests") {
  testonly = true

  sources = [
    "audio_pipe_reader_unittest.cc",
    "certificate_watcher_unittest.cc",
    "unicode_to_keysym_unittest.cc",
    "x11_character_injector_unittest.cc",
    "x_server_clipboard_unittest.cc",
  ]

  if (!remoting_use_x11) {
    sources -= [
      "unicode_to_keysym_unittest.cc",
      "x11_character_injector_unittest.cc",
      "x_server_clipboard_unittest.cc",
    ]
  }

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

  deps = [
    "//remoting/host:common",
    "//remoting/host:test_support",
    "//remoting/host/it2me:common",
    "//remoting/host/native_messaging",
    "//remoting/host/security_key:unit_tests",
    "//remoting/host/setup:common",
    "//remoting/proto",
    "//remoting/resources",
    "//skia",
    "//testing/gmock",
    "//testing/gtest",
  ]

  if (remoting_use_x11) {
    deps += [ ":x11" ]
  }

  if (!is_ios) {
    deps += [ "//components/policy/core/browser:test_support" ]
  }
}