# 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",
    "//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",
    "linux/cast_crash_reporter_client.cc",
    "linux/cast_crash_reporter_client.h",
  ]

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

# 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",
  ]
}

# GYP target: chromecast_locales.gyp:chromecast_settings
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",
  ]
}
