# Copyright 2014 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.

static_library("feedback") {
  sources = [
    "anonymizer_tool.cc",
    "anonymizer_tool.h",
    "feedback_common.cc",
    "feedback_common.h",
    "feedback_data.cc",
    "feedback_data.h",
    "feedback_report.cc",
    "feedback_report.h",
    "feedback_switches.cc",
    "feedback_switches.h",
    "feedback_uploader.cc",
    "feedback_uploader.h",
    "feedback_uploader_factory.cc",
    "feedback_uploader_factory.h",
    "feedback_util.cc",
    "feedback_util.h",
    "system_logs/system_logs_fetcher.cc",
    "system_logs/system_logs_fetcher.h",
    "system_logs/system_logs_source.cc",
    "system_logs/system_logs_source.h",
    "tracing_manager.cc",
    "tracing_manager.h",
  ]

  deps = [
    "//base",
    "//components/data_use_measurement/core",
    "//components/feedback/proto",
    "//components/keyed_service/content",
    "//components/keyed_service/core",
    "//components/variations/net",
    "//content/public/browser",
    "//content/public/common",
    "//net",
    "//services/network/public/cpp",
    "//third_party/re2",
    "//third_party/zlib/google:zip",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "anonymizer_tool_unittest.cc",
    "feedback_common_unittest.cc",
    "feedback_data_unittest.cc",
    "feedback_uploader_dispatch_unittest.cc",
    "feedback_uploader_unittest.cc",
  ]
  deps = [
    ":feedback",
    "//base",
    "//components/feedback/proto",
    "//components/keyed_service/core",
    "//components/prefs:test_support",
    "//components/sync_preferences:test_support",
    "//components/user_prefs",
    "//components/variations/net",
    "//content/test:test_support",
    "//net:test_support",
    "//services/network:test_support",
    "//services/network/public/cpp",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
