# Copyright 2015 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("rlz") {
  sources = [
    "rlz_tracker.cc",
    "rlz_tracker.h",
    "rlz_tracker_chromeos.cc",
    "rlz_tracker_delegate.h",
    "rlz_tracker_ios.cc",
    "rlz_tracker_mac.cc",
    "rlz_tracker_win.cc",
  ]

  deps = [
    "//base",
    "//components/google/core/browser",
    "//net",
    "//rlz:rlz_lib",
    "//services/network/public/cpp:cpp",
  ]

  if (is_ios) {
    deps += [ "//ui/base" ]
  }
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "rlz_tracker_unittest.cc",
  ]

  deps = [
    ":rlz",
    "//net:test_support",
    "//rlz:test_support",
    "//services/network/public/cpp:cpp",
    "//ui/base",
  ]

  if (is_chromeos) {
    deps += [ "//chromeos:test_support" ]
  }
}
