# 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")

if (enable_webrtc || !is_android) {
  jingle_includes = exec_script("//build/gypi_to_gn.py",
                                [ rebase_path("jingle.gypi") ],
                                "scope",
                                [ "jingle.gypi" ])

  # GYP version: jingle/jingle.gyp:jingle_glue
  static_library("jingle_glue") {
    sources = jingle_includes.jingle_glue_sources
    public_deps = [
      "//third_party/libjingle",
    ]
    deps = [
      "//base",
      "//base/third_party/dynamic_annotations",
      "//net",
    ]
  }

  # A library for sending and receiving peer-issued notifications.
  # GYP version: jingle/jingle.gyp:notifier
  static_library("notifier") {
    sources = [
      "notifier/base/const_communicator.h",
      "notifier/base/gaia_constants.cc",
      "notifier/base/gaia_constants.h",
      "notifier/base/gaia_token_pre_xmpp_auth.cc",
      "notifier/base/gaia_token_pre_xmpp_auth.h",
      "notifier/base/notification_method.h",
      "notifier/base/notification_method.cc",
      "notifier/base/notifier_options.cc",
      "notifier/base/notifier_options.h",
      "notifier/base/notifier_options_util.cc",
      "notifier/base/notifier_options_util.h",
      "notifier/base/server_information.cc",
      "notifier/base/server_information.h",
      "notifier/base/weak_xmpp_client.cc",
      "notifier/base/weak_xmpp_client.h",
      "notifier/base/xmpp_connection.cc",
      "notifier/base/xmpp_connection.h",
      "notifier/communicator/connection_settings.cc",
      "notifier/communicator/connection_settings.h",
      "notifier/communicator/login.cc",
      "notifier/communicator/login.h",
      "notifier/communicator/login_settings.cc",
      "notifier/communicator/login_settings.h",
      "notifier/communicator/single_login_attempt.cc",
      "notifier/communicator/single_login_attempt.h",
      "notifier/listener/non_blocking_push_client.cc",
      "notifier/listener/non_blocking_push_client.h",
      "notifier/listener/notification_constants.cc",
      "notifier/listener/notification_constants.h",
      "notifier/listener/notification_defines.cc",
      "notifier/listener/notification_defines.h",
      "notifier/listener/push_client_observer.cc",
      "notifier/listener/push_client_observer.h",
      "notifier/listener/push_client.cc",
      "notifier/listener/push_client.h",
      "notifier/listener/push_notifications_listen_task.cc",
      "notifier/listener/push_notifications_listen_task.h",
      "notifier/listener/push_notifications_send_update_task.cc",
      "notifier/listener/push_notifications_send_update_task.h",
      "notifier/listener/push_notifications_subscribe_task.cc",
      "notifier/listener/push_notifications_subscribe_task.h",
      "notifier/listener/send_ping_task.cc",
      "notifier/listener/send_ping_task.h",
      "notifier/listener/xml_element_util.cc",
      "notifier/listener/xml_element_util.h",
      "notifier/listener/xmpp_push_client.cc",
      "notifier/listener/xmpp_push_client.h",
    ]
    defines = [
     "_CRT_SECURE_NO_WARNINGS",
    ]

    public_deps = [
      "//third_party/libjingle",
    ]
    deps = [
      "//base",
      "//net",
      "//third_party/expat",
      "//url",
      ":jingle_glue",
    ]
  }

  # GYP version: jingle/jingle.gyp:notifier_test_util
  static_library("notifier_test_util") {
    testonly = true
    sources = [
      "notifier/base/fake_base_task.cc",
      "notifier/base/fake_base_task.h",
      "notifier/listener/fake_push_client.cc",
      "notifier/listener/fake_push_client.h",
      "notifier/listener/fake_push_client_observer.cc",
      "notifier/listener/fake_push_client_observer.h",
    ]
    deps = [
      ":notifier",
      "//base",
      "//testing/gmock",
    ]
  }

  # GYP version: jingle/jingle.gyp:jingle_unittests
  # TODO(GYP): Convert to executable when its dependencies are linkable.
  source_set("jingle_unittests") {
    testonly = true
    sources = [
      "glue/channel_socket_adapter_unittest.cc",
      "glue/chrome_async_socket_unittest.cc",
      "glue/fake_ssl_client_socket_unittest.cc",
      "glue/jingle_glue_mock_objects.cc",
      "glue/jingle_glue_mock_objects.h",
      "glue/logging_unittest.cc",
      "glue/mock_task.cc",
      "glue/mock_task.h",
      "glue/proxy_resolving_client_socket_unittest.cc",
      "glue/pseudotcp_adapter_unittest.cc",
      "glue/task_pump_unittest.cc",
      "glue/thread_wrapper_unittest.cc",
      "notifier/base/weak_xmpp_client_unittest.cc",
      "notifier/base/xmpp_connection_unittest.cc",
      "notifier/communicator/connection_settings_unittest.cc",
      "notifier/communicator/login_settings_unittest.cc",
      "notifier/communicator/single_login_attempt_unittest.cc",
      "notifier/listener/non_blocking_push_client_unittest.cc",
      "notifier/listener/notification_defines_unittest.cc",
      "notifier/listener/push_client_unittest.cc",
      "notifier/listener/push_notifications_send_update_task_unittest.cc",
      "notifier/listener/push_notifications_subscribe_task_unittest.cc",
      "notifier/listener/send_ping_task_unittest.cc",
      "notifier/listener/xml_element_util_unittest.cc",
      "notifier/listener/xmpp_push_client_unittest.cc",
    ]

    if (is_android) {
      sources -= [
        # TODO(jrg):
        # EXPECT_DEBUG_DEATH() uses features not enabled.
        # Should we -std=c++0x or -std=gnu++0x?
        "glue/chrome_async_socket_unittest.cc",
        "notifier/base/xmpp_connection_unittest.cc",
      ]
    }

    public_deps = [
      "//third_party/libjingle",
    ]
    deps = [
      ":jingle_glue",
      ":notifier",
      ":notifier_test_util",
      "//base",
      "//base/test:run_all_unittests",
      "//base/test:test_support",
      "//net",
      "//net:test_support",
      "//testing/gmock",
      "//testing/gtest",
    ]
  }
} else {
  # !enable_webrtc and is_android
  # Stub targets as Android doesn't use libjingle when webrtc is disabled.
  source_set("jingle_glue") { }

  source_set("jingle_glue_test_util") { }

  # GYP version: jingle/jingle.gyp:notifier
  static_library("notifier") {
    sources = [
      "notifier/base/gaia_constants.cc",
      "notifier/base/gaia_constants.h",
      "notifier/base/notification_method.h",
      "notifier/base/notification_method.cc",
      "notifier/base/notifier_options.cc",
      "notifier/base/notifier_options.h",
    ]
    deps = [
      "//base",
      "//net"
    ]
  }

  source_set("notifier_test_util") { }
}