chromium/remoting/test/BUILD.gn

# Copyright 2015 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/chromeos/ui_mode.gni")
import("//remoting/remoting_options.gni")

static_library("test_support") {
  testonly = true

  sources = [
    "cli_util.cc",
    "cli_util.h",
    "cyclic_frame_generator.cc",
    "cyclic_frame_generator.h",
    "fake_ice_connection.cc",
    "fake_ice_connection.h",
    "fake_network_dispatcher.cc",
    "fake_network_dispatcher.h",
    "fake_network_manager.cc",
    "fake_network_manager.h",
    "fake_port_allocator.cc",
    "fake_port_allocator.h",
    "fake_socket_factory.cc",
    "fake_socket_factory.h",
    "fake_test_token_storage.cc",
    "fake_test_token_storage.h",
    "fake_webrtc_connection.cc",
    "fake_webrtc_connection.h",
    "frame_generator_util.cc",
    "frame_generator_util.h",
    "remote_connection_observer.h",
    "rgb_value.cc",
    "rgb_value.h",
    "scroll_frame_generator.cc",
    "scroll_frame_generator.h",
    "test_device_id_provider.cc",
    "test_device_id_provider.h",
    "test_oauth_token_getter.cc",
    "test_oauth_token_getter.h",
    "test_token_storage.cc",
    "test_token_storage.h",
    "video_frame_writer.cc",
    "video_frame_writer.h",
  ]

  public_deps = [
    "//base",
    "//mojo/core/embedder",
    "//net",
    "//remoting/base",
    "//remoting/base:logging",
    "//remoting/client",
    "//remoting/client/audio",
    "//remoting/codec:decoder",
    "//remoting/codec:encoder",
    "//remoting/protocol",
    "//remoting/signaling",
    "//services/network:test_support",
    "//third_party/webrtc_overrides:webrtc_component",
    "//ui/gfx",
  ]

  deps = [
    "//components/webrtc:net_address_utils",
    "//components/webrtc:thread_wrapper",
    "//google_apis",
    "//remoting/base:authorization",
    "//remoting/base:errors",
    "//remoting/base:test_support",
    "//services/network:network_service",
    "//services/network/public/mojom",
    "//skia",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/abseil-cpp:absl",
  ]
}

if (enable_remoting_host && !is_android && !is_chromeos_ash &&
    !is_chromeos_lacros) {
  static_library("fake_connection_event_logger") {
    testonly = true

    sources = [
      "fake_connection_event_logger.cc",
      "fake_connection_event_logger.h",
    ]

    deps = [
      "//remoting/host:common",
      "//remoting/protocol:test_support",
    ]
  }

  if (!is_win) {
    # A binary for starting an IT2ME host from command line.
    executable("it2me_cli_host") {
      testonly = true
      sources = [
        "it2me_cli_host.cc",
        "it2me_cli_host.h",
        "it2me_cli_host_main.cc",
      ]
      deps = [
        ":test_support",
        "//extensions/browser/api/messaging:native_messaging",
        "//mojo/core/embedder",
        "//remoting/base",
        "//remoting/base:authorization",
        "//remoting/base:logging",
        "//remoting/host",
        "//remoting/host:resources",
        "//remoting/host/it2me:common",
        "//remoting/host/native_messaging",
      ]
    }
  }

  static_library("it2me_standalone_host") {
    testonly = true

    sources = [
      "it2me_standalone_host.cc",
      "it2me_standalone_host.h",
    ]

    deps = [
      ":fake_connection_event_logger",
      "//base/test:test_support",
      "//remoting/base:session_policies",
      "//remoting/protocol:protocol",
      "//remoting/protocol:test_support",
      "//third_party/webrtc_overrides:webrtc_component",
    ]

    public_deps = [
      "//remoting/host:test_support",
      "//testing/gmock",
    ]
  }

  executable("it2me_standalone_host_main") {
    testonly = true
    defines = []
    libs = []

    sources = [ "it2me_standalone_host_main.cc" ]

    deps = [
      ":it2me_standalone_host",
      "//remoting/host:resources",
    ]

    if ((is_linux || is_chromeos_lacros) && remoting_use_x11) {
      deps += [
        "//build/config/linux/gtk",
        "//ui/events/platform/x11:x11",
      ]
    }

    if (is_win) {
      defines += [ "_ALT_NO_EXCEPTIONS" ]
      deps += [ "//remoting/host/win:dpi_aware_exe_manifest" ]
      libs += [
        "rpcrt4.lib",
        "wtsapi32.lib",
      ]
    }
  }

  # A binary with a specific version of EvaluateCapabilityLocally() for test
  # purpose only.
  executable("capability_test_stub") {
    testonly = true
    sources = [ "capability_test_stub_main.cc" ]

    deps = [
      "//base",
      "//remoting/host/base",
    ]
  }
}

# A binary for testing and fiddling FTL services.
executable("ftl_services_playground") {
  testonly = true
  sources = [
    "ftl_services_playground.cc",
    "ftl_services_playground.h",
    "ftl_services_playground_main.cc",
  ]
  deps = [
    ":test_support",
    "//mojo/core/embedder",
    "//remoting/base",
    "//remoting/base:authorization",
    "//remoting/base:logging",
    "//remoting/proto/ftl/v1:ftl_messages",
    "//remoting/signaling",
    "//services/network:network_service",
  ]
}

# A binary for testing and fiddling the FTL signaling process.
executable("ftl_signaling_playground") {
  testonly = true
  sources = [
    "ftl_signaling_playground.cc",
    "ftl_signaling_playground.h",
    "ftl_signaling_playground_main.cc",
  ]
  deps = [
    ":test_support",
    "//components/webrtc:thread_wrapper",
    "//mojo/core/embedder",
    "//remoting/base",
    "//remoting/base:authorization",
    "//remoting/base:errors",
    "//remoting/base:logging",
    "//remoting/signaling",
    "//services/network:network_service",
  ]
}

if (enable_me2me_host && is_linux) {
  # A binary for testing and fiddling the SessionAuthz service.
  executable("session_authz_playground") {
    testonly = true
    sources = [
      "session_authz_playground.cc",
      "session_authz_playground.h",
      "session_authz_playground_main.cc",
    ]
    deps = [
      ":test_support",
      "//mojo/core/embedder",
      "//remoting/base",
      "//remoting/base:authorization",
      "//remoting/base:logging",
      "//remoting/host",
      "//remoting/proto:internal_structs",
      "//services/network:network_service",
    ]
  }
}