# 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("//build/config/ios/rules.gni")
import("//ios/build/chrome_build.gni")
import("//ios/build/config.gni")
import("//ios/third_party/earl_grey/ios_eg_test.gni")
import("//ios/third_party/firebase/firebase.gni")

ios_app_bundle("showcase") {
  info_plist = "core/Info.plist"
  extra_substitutions = [ "IOS_BUNDLE_ID_PREFIX=$ios_app_bundle_id_prefix" ]
  output_name = "Showcase"
  deps = [
    ":features",
    "//ios/showcase/core:main",
  ]
  bundle_deps = [ "//ios/showcase/core/resources" ]
  assert_no_deps = ios_assert_no_deps
}

group("features") {
  deps = [
    "//ios/showcase/bubble",
    "//ios/showcase/content_suggestions",
    "//ios/showcase/payments",
    "//ios/showcase/recent_tabs",
    "//ios/showcase/settings",
    "//ios/showcase/tab_grid",
    "//ios/showcase/text_badge_view",
    "//ios/showcase/uikit_table_view_cell",
    "//ios/showcase/widget",
  ]
}

group("all_tests") {
  testonly = true
  deps = [
    ":ios_showcase_egtests",
  ]
}

ios_eg_test("ios_showcase_egtests") {
  info_plist = "core/Info.plist"
  extra_substitutions = [ "IOS_BUNDLE_ID_PREFIX=$ios_app_bundle_id_prefix" ]
  deps = [
    ":features",
    "//ios/showcase/core:main",

    # Add all eg_tests targets below.
    "//ios/showcase/bubble:eg_tests",
    "//ios/showcase/content_suggestions:eg_tests",
    "//ios/showcase/core:eg_tests",
    "//ios/showcase/payments:eg_tests",
    "//ios/showcase/text_badge_view:eg_tests",
  ]

  # TODO(crbug.com/870935): This dependency of ios_showcase_egtests on
  # Firebase SDK seems unnecessary. There must be some transitive
  # dependencies that eventually led to ios/chrome/app:app_internal.
  if (ios_enable_firebase_sdk) {
    deps += [ "//ios/third_party/firebase" ]
  }
  bundle_deps = [ "//ios/showcase/core/resources" ]
  assert_no_deps = ios_assert_no_deps
}
