# Copyright 2015 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("//testing/test.gni")
import("//tools/grit/grit_rule.gni")

source_set("app") {
  sources = [
    "cast_main_delegate.cc",
    "cast_main_delegate.h",
  ]

  deps = [
    ":cast_crash_client",
    "//base",
    "//chromecast/base",
    "//chromecast/browser",
    "//chromecast/common",
    "//chromecast/renderer",
    "//chromecast/utility",
    "//components/crash/content/app:lib",
    "//content/public/app:both",
    "//content/public/browser",
    "//content/public/common",
    "//ui/base",
  ]
}

source_set("cast_crash_client") {
  sources = [
    "android/cast_crash_reporter_client_android.cc",
    "android/cast_crash_reporter_client_android.h",
    "android/crash_handler.cc",
    "android/crash_handler.h",
    "linux/cast_crash_reporter_client.cc",
    "linux/cast_crash_reporter_client.h",
  ]

  deps = [
    "//base",
    "//chromecast/base",
    "//chromecast/common",
    "//chromecast/crash",
    "//components/crash/content/app",
    "//components/crash/content/app:lib",
    "//content/public/common",
  ]

  if (is_android) {
    deps += [
      "//breakpad:client",
      "//chromecast/base:cast_version",
      "//chromecast/browser:jni_headers",
    ]
  }
}

# TODO(kmackay) Consider renaming this.
test("cast_shell_unittests") {
  sources = [
    "linux/cast_crash_reporter_client_unittest.cc",
  ]

  deps = [
    ":cast_crash_client",
    "//base",
    "//base/test:run_all_unittests",
    "//base/test:test_support",
    "//chromecast/base:test_support",
    "//chromecast/crash",
    "//chromecast/crash:test_support",
    "//testing/gtest",
  ]
}

grit("resources") {
  source = "//chromecast/app/resources/shell_resources.grd"

  resource_ids = "//chromecast/app/resources/resource_ids"

  outputs = [
    "grit/shell_resources.h",
    "shell_resources.pak",
  ]
}

grit("chromecast_settings") {
  source = "//chromecast/app/resources/chromecast_settings.grd"
  resource_ids = "//chromecast/app/resources/resource_ids"
  output_dir = "$root_gen_dir/chromecast_strings"

  outputs = [
    "grit/chromecast_settings.h",
    "chromecast_settings_am.pak",
    "chromecast_settings_ar.pak",
    "chromecast_settings_bg.pak",
    "chromecast_settings_bn.pak",
    "chromecast_settings_ca.pak",
    "chromecast_settings_cs.pak",
    "chromecast_settings_da.pak",
    "chromecast_settings_de.pak",
    "chromecast_settings_el.pak",
    "chromecast_settings_en-GB.pak",
    "chromecast_settings_en-US.pak",
    "chromecast_settings_es.pak",
    "chromecast_settings_es-419.pak",
    "chromecast_settings_et.pak",
    "chromecast_settings_fa.pak",
    "chromecast_settings_fake-bidi.pak",
    "chromecast_settings_fi.pak",
    "chromecast_settings_fil.pak",
    "chromecast_settings_fr.pak",
    "chromecast_settings_gu.pak",
    "chromecast_settings_he.pak",
    "chromecast_settings_hi.pak",
    "chromecast_settings_hr.pak",
    "chromecast_settings_hu.pak",
    "chromecast_settings_id.pak",
    "chromecast_settings_it.pak",
    "chromecast_settings_ja.pak",
    "chromecast_settings_kn.pak",
    "chromecast_settings_ko.pak",
    "chromecast_settings_lt.pak",
    "chromecast_settings_lv.pak",
    "chromecast_settings_ml.pak",
    "chromecast_settings_mr.pak",
    "chromecast_settings_ms.pak",
    "chromecast_settings_nl.pak",
    "chromecast_settings_nb.pak",
    "chromecast_settings_pl.pak",
    "chromecast_settings_pt-BR.pak",
    "chromecast_settings_pt-PT.pak",
    "chromecast_settings_ro.pak",
    "chromecast_settings_ru.pak",
    "chromecast_settings_sk.pak",
    "chromecast_settings_sl.pak",
    "chromecast_settings_sr.pak",
    "chromecast_settings_sv.pak",
    "chromecast_settings_sw.pak",
    "chromecast_settings_ta.pak",
    "chromecast_settings_te.pak",
    "chromecast_settings_th.pak",
    "chromecast_settings_tr.pak",
    "chromecast_settings_uk.pak",
    "chromecast_settings_vi.pak",
    "chromecast_settings_zh-CN.pak",
    "chromecast_settings_zh-TW.pak",
  ]
}
