# Copyright 2018 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/feed/features.gni")

# This file is in a separate target so all targets in the build can refer to the
# buildflag header to get the necessary preprocessor defines without bringing in
# any of the feed targets.
buildflag_header("buildflags") {
  header = "buildflags.h"
  flags = [ "ENABLE_FEED_IN_CHROME=$enable_feed_in_chrome" ]
}

static_library("feature_list") {
  sources = [
    "feed_feature_list.cc",
    "feed_feature_list.h",
  ]

  deps = [
    "//base",
  ]
}

source_set("unit_tests") {
  testonly = true
  deps = [
    "core:core_unit_tests",
  ]

  if (!is_ios) {
    deps += [ "content:content_unit_tests" ]
  }
}
