# 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/features.gni")
import("//remoting/remoting_options.gni")
import("//media/media_options.gni")

static_library("protocol") {
  sources = [
    "audio_decode_scheduler.cc",
    "audio_decode_scheduler.h",
    "audio_reader.cc",
    "audio_reader.h",
    "audio_stub.h",
    "auth_util.cc",
    "auth_util.h",
    "authenticator.cc",
    "authenticator.h",
    "capability_names.h",
    "channel_authenticator.h",
    "channel_dispatcher_base.cc",
    "channel_dispatcher_base.h",
    "channel_multiplexer.cc",
    "channel_multiplexer.h",
    "channel_socket_adapter.cc",
    "channel_socket_adapter.h",
    "client_authentication_config.cc",
    "client_authentication_config.h",
    "client_control_dispatcher.cc",
    "client_control_dispatcher.h",
    "client_event_dispatcher.cc",
    "client_event_dispatcher.h",
    "client_stub.h",
    "client_video_dispatcher.cc",
    "client_video_dispatcher.h",
    "client_video_stats_dispatcher.cc",
    "client_video_stats_dispatcher.h",
    "clipboard_echo_filter.cc",
    "clipboard_echo_filter.h",
    "clipboard_filter.cc",
    "clipboard_filter.h",
    "clipboard_stub.h",
    "clipboard_thread_proxy.cc",
    "clipboard_thread_proxy.h",
    "connection_to_client.h",
    "connection_to_host.cc",
    "connection_to_host.h",
    "content_description.cc",
    "content_description.h",
    "data_channel_manager.cc",
    "data_channel_manager.h",
    "datagram_channel_factory.h",
    "errors.cc",
    "errors.h",
    "frame_consumer.h",
    "frame_stats.cc",
    "frame_stats.h",
    "host_control_dispatcher.cc",
    "host_control_dispatcher.h",
    "host_event_dispatcher.cc",
    "host_event_dispatcher.h",
    "host_stub.h",
    "host_video_dispatcher.cc",
    "host_video_dispatcher.h",
    "host_video_stats_dispatcher.cc",
    "host_video_stats_dispatcher.h",
    "http_ice_config_request.cc",
    "http_ice_config_request.h",
    "ice_config.cc",
    "ice_config.h",
    "ice_config_request.h",
    "ice_connection_to_host.cc",
    "ice_connection_to_host.h",
    "ice_transport.cc",
    "ice_transport.h",
    "ice_transport_channel.cc",
    "ice_transport_channel.h",
    "input_event_timestamps.cc",
    "input_event_timestamps.h",
    "input_event_tracker.cc",
    "input_event_tracker.h",
    "input_filter.cc",
    "input_filter.h",
    "input_stub.h",
    "it2me_host_authenticator_factory.cc",
    "it2me_host_authenticator_factory.h",
    "jingle_info_request.cc",
    "jingle_info_request.h",
    "jingle_messages.cc",
    "jingle_messages.h",
    "jingle_session.cc",
    "jingle_session.h",
    "jingle_session_manager.cc",
    "jingle_session_manager.h",
    "me2me_host_authenticator_factory.cc",
    "me2me_host_authenticator_factory.h",
    "message_decoder.cc",
    "message_decoder.h",
    "message_pipe.h",
    "message_reader.cc",
    "message_reader.h",
    "message_serialization.cc",
    "message_serialization.h",
    "monitored_video_stub.cc",
    "monitored_video_stub.h",
    "mouse_input_filter.cc",
    "mouse_input_filter.h",
    "named_message_pipe_handler.cc",
    "named_message_pipe_handler.h",
    "negotiating_authenticator_base.cc",
    "negotiating_authenticator_base.h",
    "negotiating_client_authenticator.cc",
    "negotiating_client_authenticator.h",
    "negotiating_host_authenticator.cc",
    "negotiating_host_authenticator.h",
    "network_settings.h",
    "p2p_datagram_socket.h",
    "p2p_stream_socket.h",
    "pairing_authenticator_base.cc",
    "pairing_authenticator_base.h",
    "pairing_client_authenticator.cc",
    "pairing_client_authenticator.h",
    "pairing_host_authenticator.cc",
    "pairing_host_authenticator.h",
    "pairing_registry.cc",
    "pairing_registry.h",
    "performance_tracker.cc",
    "performance_tracker.h",
    "port_allocator.cc",
    "port_allocator.h",
    "port_allocator_factory.h",
    "port_range.cc",
    "port_range.h",
    "process_stats_stub.h",
    "pseudotcp_adapter.cc",
    "pseudotcp_adapter.h",
    "pseudotcp_channel_factory.cc",
    "pseudotcp_channel_factory.h",
    "rejecting_authenticator.cc",
    "rejecting_authenticator.h",
    "sdp_message.cc",
    "sdp_message.h",
    "secure_channel_factory.cc",
    "secure_channel_factory.h",
    "session.h",
    "session_config.cc",
    "session_config.h",
    "session_manager.h",
    "session_plugin.h",
    "socket_util.cc",
    "socket_util.h",
    "spake2_authenticator.cc",
    "spake2_authenticator.h",
    "ssl_hmac_channel_authenticator.cc",
    "ssl_hmac_channel_authenticator.h",
    "stream_channel_factory.h",
    "stream_message_pipe_adapter.cc",
    "stream_message_pipe_adapter.h",
    "third_party_authenticator_base.cc",
    "third_party_authenticator_base.h",
    "third_party_client_authenticator.cc",
    "third_party_client_authenticator.h",
    "third_party_host_authenticator.cc",
    "third_party_host_authenticator.h",
    "token_validator.h",
    "transport.cc",
    "transport.h",
    "transport_context.cc",
    "transport_context.h",
    "v2_authenticator.cc",
    "v2_authenticator.h",
    "validating_authenticator.cc",
    "validating_authenticator.h",
    "video_channel_state_observer.h",
    "video_renderer.h",
    "video_stats_stub.h",
    "video_stub.h",
  ]

  configs += [
    "//build/config:precompiled_headers",
    "//build/config/compiler:no_size_t_to_int_warning",
    "//build/config/compiler:wexit_time_destructors",
  ]

  public_deps = [
    "//remoting/proto",
    "//third_party/webrtc_overrides",
  ]
  deps = [
    "//base",
    "//crypto",
    "//jingle:jingle_glue",
    "//net",
    "//remoting/base",
    "//remoting/codec:decoder",
    "//remoting/signaling",
    "//third_party/boringssl",
    "//third_party/libyuv",
  ]

  if (!is_nacl) {
    sources += [
      "chromium_port_allocator_factory.cc",
      "chromium_port_allocator_factory.h",
      "chromium_socket_factory.cc",
      "chromium_socket_factory.h",
      "webrtc_audio_module.cc",
      "webrtc_audio_module.h",
      "webrtc_audio_sink_adapter.cc",
      "webrtc_audio_sink_adapter.h",
      "webrtc_connection_to_host.cc",
      "webrtc_connection_to_host.h",
      "webrtc_data_stream_adapter.cc",
      "webrtc_data_stream_adapter.h",
      "webrtc_dummy_video_capturer.cc",
      "webrtc_dummy_video_capturer.h",
      "webrtc_dummy_video_encoder.cc",
      "webrtc_dummy_video_encoder.h",
      "webrtc_transport.cc",
      "webrtc_transport.h",
      "webrtc_video_renderer_adapter.cc",
      "webrtc_video_renderer_adapter.h",
    ]

    if (enable_remoting_host) {
      sources += [
        "webrtc_audio_source_adapter.cc",
        "webrtc_audio_source_adapter.h",
        "webrtc_audio_stream.cc",
        "webrtc_audio_stream.h",
        "webrtc_connection_to_client.cc",
        "webrtc_connection_to_client.h",
        "webrtc_frame_scheduler.h",
        "webrtc_frame_scheduler_simple.cc",
        "webrtc_frame_scheduler_simple.h",
        "webrtc_video_stream.cc",
        "webrtc_video_stream.h",
      ]
    }

    deps += [ "//third_party/webrtc_overrides:init_webrtc" ]
  }

  if (enable_remoting_host) {
    sources += [
      "audio_pump.cc",
      "audio_pump.h",
      "audio_writer.cc",
      "audio_writer.h",
      "capture_scheduler.cc",
      "capture_scheduler.h",
      "ice_connection_to_client.cc",
      "ice_connection_to_client.h",
      "video_frame_pump.cc",
      "video_frame_pump.h",
    ]
    deps += [ "//remoting/codec:encoder" ]
  }
}

static_library("test_support") {
  testonly = true

  sources = [
    "fake_authenticator.cc",
    "fake_authenticator.h",
    "fake_connection_to_host.cc",
    "fake_connection_to_host.h",
    "fake_datagram_socket.cc",
    "fake_datagram_socket.h",
    "fake_message_pipe.cc",
    "fake_message_pipe.h",
    "fake_message_pipe_wrapper.cc",
    "fake_message_pipe_wrapper.h",
    "fake_session.cc",
    "fake_session.h",
    "fake_stream_socket.cc",
    "fake_stream_socket.h",
    "fake_video_renderer.cc",
    "fake_video_renderer.h",
    "protocol_mock_objects.cc",
    "protocol_mock_objects.h",
  ]

  if (enable_remoting_host) {
    sources += [
      "fake_audio_source.cc",
      "fake_audio_source.h",
      "fake_connection_to_client.cc",
      "fake_connection_to_client.h",
      "fake_desktop_capturer.cc",
      "fake_desktop_capturer.h",
    ]
  }

  public_deps = [
    ":protocol",
    "//testing/gmock",
  ]
}

source_set("unit_tests") {
  testonly = true

  sources = [
    "audio_decode_scheduler_unittest.cc",
    "authenticator_test_base.cc",
    "authenticator_test_base.h",
    "channel_multiplexer_unittest.cc",
    "channel_socket_adapter_unittest.cc",
    "chromium_socket_factory_unittest.cc",
    "client_video_dispatcher_unittest.cc",
    "clipboard_echo_filter_unittest.cc",
    "clipboard_filter_unittest.cc",
    "connection_tester.cc",
    "connection_tester.h",
    "content_description_unittest.cc",
    "data_channel_manager_unittest.cc",
    "http_ice_config_request_unittest.cc",
    "ice_config_unittest.cc",
    "ice_transport_unittest.cc",
    "input_event_tracker_unittest.cc",
    "input_filter_unittest.cc",
    "jingle_messages_unittest.cc",
    "jingle_session_unittest.cc",
    "message_decoder_unittest.cc",
    "message_reader_unittest.cc",
    "monitored_video_stub_unittest.cc",
    "mouse_input_filter_unittest.cc",
    "negotiating_authenticator_unittest.cc",
    "pairing_registry_unittest.cc",
    "port_range_unittest.cc",
    "ppapi_module_stub.cc",
    "pseudotcp_adapter_unittest.cc",
    "sdp_message_unittest.cc",
    "session_config_unittest.cc",
    "spake2_authenticator_unittest.cc",
    "ssl_hmac_channel_authenticator_unittest.cc",
    "third_party_authenticator_unittest.cc",
    "v2_authenticator_unittest.cc",
    "validating_authenticator_unittest.cc",
    "webrtc_transport_unittest.cc",
  ]

  if (enable_remoting_host) {
    sources += [
      "audio_pump_unittest.cc",
      "capture_scheduler_unittest.cc",
      "connection_unittest.cc",
      "video_frame_pump_unittest.cc",
      "webrtc_audio_source_adapter_unittest.cc",
      "webrtc_frame_scheduler_unittest.cc",
    ]
  }

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