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