# Copyright 2019 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("lib") {
  sources = [
    "annotator.cc",
    "annotator.h",
  ]

  visibility = [ ":*" ]

  deps = [
    "//base",
    "//components/google/core/common",
    "//mojo/public/cpp/bindings",
    "//net",
    "//services/data_decoder/public/mojom",
    "//services/image_annotation/public/mojom",
    "//services/network/public/cpp",
    "//services/service_manager/public/cpp",
    "//url",
  ]
}

source_set("service") {
  sources = [
    "image_annotation_service.cc",
    "image_annotation_service.h",
  ]

  deps = [
    ":lib",
    "//base",
    "//services/image_annotation/public/mojom",
    "//services/network/public/cpp",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/mojom",
    "//url",
  ]
}

source_set("tests") {
  testonly = true

  sources = [
    "annotator_unittest.cc",
  ]

  deps = [
    ":lib",
    "//base",
    "//base/test:test_support",
    "//mojo/public/cpp/bindings",
    "//net",
    "//services/data_decoder/public/cpp:test_support",
    "//services/data_decoder/public/mojom",
    "//services/image_annotation/public/cpp",
    "//services/image_annotation/public/mojom",
    "//services/network:test_support",
    "//services/network/public/cpp",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/cpp/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//url",
  ]
}
