# Copyright 2018 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("journey_info_fetcher") {
  sources = [
    "journey_info_fetcher.cc",
    "journey_info_fetcher.h",
    "journey_info_json_request.cc",
    "journey_info_json_request.h",
  ]

  deps = [
    "//base",
    "//components/journey/proto",
    "//components/variations/net:net",
    "//net",
    "//services/data_decoder/public/cpp",
    "//services/identity/public/cpp",
    "//services/network/public/cpp",
    "//url",
  ]
}

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

  deps = [
    ":journey_info_fetcher",
    "//base/test:test_support",
    "//services/data_decoder/public/cpp:test_support",
    "//services/identity/public/cpp:test_support",
    "//services/network:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
