# Copyright 2016 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("//remoting/build/config/remoting_build.gni")
import("//remoting/remoting_locales.gni")

group("all") {
  testonly = true

  deps = [
    ":ios_core",
    "./app:all",
  ]
}

group("all_test") {
  testonly = true

  deps = [
    ":ios_core_unit_tests",
  ]
}

source_set("ios_core") {
  sources = [
    "client_gestures.h",
    "client_gestures.mm",
    "client_keyboard.h",
    "client_keyboard.mm",
  ]

  public_deps = [
    "//remoting/ios/domain",
    "//remoting/ios/facade",
    "//remoting/ios/session",
    "//third_party/webrtc/modules/desktop_capture:primitives",
    "//third_party/webrtc/rtc_base:rtc_base",
  ]

  deps = [
    "//base",
    "//remoting/protocol",
  ]

  libs = [
    "CoreGraphics.framework",
    "GLKit.framework",
    "OpenGLES.framework",
  ]

  configs += [ "//build/config/compiler:enable_arc" ]
}

source_set("ios_core_unit_tests") {
  testonly = true

  include_dirs = [
    "$root_gen_dir",
    "//third_party/protobuf/src",
  ]

  sources = []

  deps = [
    ":ios_core",
    "//testing/gtest",
  ]

  configs += [ "//build/config/compiler:enable_arc" ]

  data = []
}

# test

test("ios_remoting_unittests") {
  deps = [
    "//base/test:run_all_unittests",
    "//base/test:test_support",
    "//remoting/ios/audio:unit_tests",
    "//remoting/ios/facade:unit_tests",
    "//remoting/ios/persistence:unit_tests",
  ]

  foreach(locale, remoting_locales_with_underscores) {
    deps += [ ":unittests_locale_${locale}_bundle_data" ]
  }
}

foreach(locale, remoting_locales_with_underscores) {
  bundle_data("unittests_locale_${locale}_bundle_data") {
    sources = [
      "$root_out_dir/remoting/resources/$locale.lproj/locale.pak",
    ]
    outputs = [
      "{{bundle_resources_dir}}/$locale.lproj/{{source_file_part}}",
    ]
    public_deps = [
      "//remoting/resources:copy_locales",
    ]
  }
}
