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

source_set("privacy_budget") {
  sources = [
    "field_trial_param_conversions.cc",
    "field_trial_param_conversions.h",
    "order_preserving_set.h",
    "privacy_budget_features.cc",
    "privacy_budget_features.h",
    "privacy_budget_settings_provider.cc",
    "privacy_budget_settings_provider.h",
    "types.h",
  ]

  public_deps = [
    "//base",
    "//third_party/blink/public/common",
  ]
}

source_set("unit_tests") {
  testonly = true

  sources = [
    "field_trial_param_conversions_unittest.cc",
    "order_preserving_set_unittest.cc",
  ]

  deps = [
    ":privacy_budget",
    "//base",
    "//testing/gtest",
  ]
}

source_set("test_support") {
  testonly = true

  sources = [
    "scoped_privacy_budget_config.cc",
    "scoped_privacy_budget_config.h",
  ]

  deps = [
    ":privacy_budget",
    "//base/test:test_support",
    "//third_party/blink/public/common/privacy_budget",
  ]
}
