# Copyright 2017 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/buildflag_header.gni")
import("//components/feature_engagement/features.gni")

if (is_android) {
  import("//build/config/android/config.gni")
  import("//build/config/android/rules.gni")
}

buildflag_header("buildflags") {
  header = "buildflags.h"
  flags = [ "ENABLE_LEGACY_DESKTOP_IN_PRODUCT_HELP=$enable_legacy_desktop_in_product_help" ]
}

group("feature_engagement") {
  public_deps = [
    ":buildflags",
    "//components/feature_engagement/public",
  ]

  deps = [
    "//components/feature_engagement/internal",
  ]
}

group("unit_tests") {
  testonly = true

  deps = [
    "//components/feature_engagement/internal:unit_tests",
    "//components/feature_engagement/public:unit_tests",
  ]

  data_deps = [
    ":components_unittests_gtest_filter",
  ]
}

source_set("components_unittests_gtest_filter") {
  testonly = true

  data = [
    "components_unittests.filter",
  ]
}

if (is_android) {
  java_group("feature_engagement_java") {
    deps = [
      "//components/feature_engagement/internal:internal_java",
      "//components/feature_engagement/public:public_java",
    ]
  }
}
