# 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("webdata_services") {
  output_name = "webdata_services"

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

  deps = [
    "//base",
    "//components/autofill/core/browser",
    "//components/autofill/core/common",
    "//components/keyed_service/core",
    "//components/password_manager/core/browser",
    "//components/search_engines",
    "//components/signin/core/browser",
    "//components/sync",
    "//components/webdata/common",
    "//sql",
  ]

  if (!is_ios) {
    deps += [ "//components/payments/content:utils" ]
  }
}

static_library("test_support") {
  testonly = true
  sources = [
    "web_data_service_test_util.cc",
    "web_data_service_test_util.h",
  ]

  deps = [
    ":webdata_services",
    "//base",
    "//components/autofill/core/browser",
    "//components/signin/core/browser",
  ]
}
