chromium/components/variations/service/BUILD.gn

# Copyright 2015 The Chromium Authors
# 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("//build/config/chrome_build.gni")
import("//build/config/chromeos/ui_mode.gni")

declare_args() {
  # Set to true make a build that disables activation of field trial tests
  # specified in testing/variations/fieldtrial_testing_config.json.
  # Note: For Chrome-branded Android builds, this is always considered as set to
  # true (see below). This is done to avoid the binary size impact (~40 KiB) on
  # Android.
  disable_fieldtrial_testing_config = false

  # Set to true to make a build that force enables activation of field trial
  # tests specified in testing/variations/fieldtrial_testing_config.json.
  force_enable_fieldtrial_testing_config = false
}

assert(!(disable_fieldtrial_testing_config &&
             force_enable_fieldtrial_testing_config),
       "Cannot enable and disable field trial testing at the same time.")

fieldtrial_testing_enabled =
    force_enable_fieldtrial_testing_config ||
    (!disable_fieldtrial_testing_config && !(is_android && is_chrome_branded))

buildflag_header("buildflags") {
  header = "buildflags.h"
  flags = [ "FIELDTRIAL_TESTING_ENABLED=$fieldtrial_testing_enabled" ]
}

static_library("service") {
  sources = [
    "google_groups_manager.cc",
    "google_groups_manager.h",
    "google_groups_manager_prefs.h",
    "limited_entropy_randomization.cc",
    "limited_entropy_randomization.h",
    "limited_entropy_synthetic_trial.cc",
    "limited_entropy_synthetic_trial.h",
    "safe_seed_manager.cc",
    "safe_seed_manager.h",
    "safe_seed_manager_base.cc",
    "safe_seed_manager_base.h",
    "ui_string_overrider.cc",
    "ui_string_overrider.h",
    "variations_field_trial_creator.cc",
    "variations_field_trial_creator.h",
    "variations_field_trial_creator_base.cc",
    "variations_field_trial_creator_base.h",
    "variations_service.cc",
    "variations_service.h",
    "variations_service_client.cc",
    "variations_service_client.h",
    "variations_service_utils.cc",
    "variations_service_utils.h",
  ]

  public_deps = [ "//base" ]
  deps = [
    ":buildflags",
    "//base/version_info:channel",
    "//build:branding_buildflags",
    "//build:chromeos_buildflags",
    "//build/config/chromebox_for_meetings:buildflags",
    "//components/country_codes",
    "//components/encrypted_messages",
    "//components/keyed_service/core",
    "//components/language/core/browser",
    "//components/metrics",
    "//components/network_time",
    "//components/pref_registry",
    "//components/prefs",
    "//components/sync/service",
    "//components/variations",
    "//components/variations/field_trial_config",
    "//components/variations/proto",
    "//components/version_info",
    "//components/web_resource",
    "//net",
    "//services/network/public/cpp",
    "//ui/base",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "google_groups_manager_unittest.cc",
    "limited_entropy_randomization_unittest.cc",
    "limited_entropy_synthetic_trial_unittest.cc",
    "safe_seed_manager_unittest.cc",
    "ui_string_overrider_unittest.cc",
    "variations_field_trial_creator_unittest.cc",
    "variations_service_unittest.cc",
    "variations_service_utils_unittest.cc",
  ]

  deps = [
    ":buildflags",
    ":service",
    "//base",
    "//base/test:test_support",
    "//build:branding_buildflags",
    "//components/metrics",
    "//components/metrics:test_support",
    "//components/prefs:test_support",
    "//components/sync:test_support",
    "//components/sync_preferences:test_support",
    "//components/variations",
    "//components/variations:test_support",
    "//components/variations/field_trial_config",
    "//components/variations/proto",
    "//components/version_info",
    "//components/web_resource:test_support",
    "//net",
    "//net:test_support",
    "//services/network:test_support",
    "//services/network/public/cpp",
    "//testing/gtest",
  ]
}