# Copyright 2016 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.

import("//services/service_manager/public/cpp/service.gni")
import("//services/service_manager/public/service_manifest.gni")
import("//testing/test.gni")

service("video_capture") {
  sources = [
    "service_impl.cc",
    "service_impl.h",
    "service_main.cc",
  ]

  deps = [
    ":lib",
    "//media/capture:capture",
    "//mojo/public/cpp/system",
    "//services/service_manager/public/cpp",
    "//services/video_capture/public/interfaces",
  ]

  data_deps = [
    ":manifest",
  ]
}

service_manifest("manifest") {
  name = "video_capture"
  source = "service_manifest.json"
}

source_set("lib") {
  sources = [
    "buffer_tracker_factory_impl.cc",
    "buffer_tracker_factory_impl.h",
    "device_client_media_to_mojo_mock_adapter.cc",
    "device_client_media_to_mojo_mock_adapter.h",
    "device_factory_media_to_mojo_adapter.cc",
    "device_factory_media_to_mojo_adapter.h",
    "device_media_to_mojo_adapter.cc",
    "device_media_to_mojo_adapter.h",
    "device_mojo_mock_to_media_adapter.cc",
    "device_mojo_mock_to_media_adapter.h",
    "mock_device_factory.cc",
    "mock_device_factory.h",
    "mojo_shared_memory_buffer_handle.cc",
    "mojo_shared_memory_buffer_handle.h",
    "mojo_shared_memory_buffer_tracker.cc",
    "mojo_shared_memory_buffer_tracker.h",
    "receiver_mojo_to_media_adapter.cc",
    "receiver_mojo_to_media_adapter.h",
  ]

  deps = [
    "//base",
    "//media",
    "//media/capture:capture",
    "//media/mojo/common:common",
    "//media/mojo/interfaces:image_capture",
    "//mojo/common:common_base",
    "//services/service_manager/public/cpp",
    "//services/video_capture/public/interfaces",
  ]
}

test("video_capture_unittests") {
  sources = [
    "fake_device_descriptor_test.cc",
    "fake_device_descriptor_test.h",
    "fake_device_descriptor_unittest.cc",
    "fake_device_test.cc",
    "fake_device_test.h",
    "fake_device_unittest.cc",
    "mock_device_descriptor_receiver.cc",
    "mock_device_descriptor_receiver.h",
    "mock_device_test.cc",
    "mock_device_test.h",
    "mock_device_unittest.cc",
    "mock_media_device_impl.cc",
    "mock_media_device_impl.h",
    "mock_receiver.cc",
    "mock_receiver.h",
    "service_test.cc",
    "service_test.h",
    "service_unittest.cc",
  ]

  deps = [
    ":video_capture",
    "//base",
    "//base/test:test_support",
    "//media",
    "//media/capture:capture",
    "//media/capture/mojo:capture_types",
    "//media/mojo/common:common",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/cpp:service_test_support",
    "//services/service_manager/public/cpp/test:run_all_service_tests",
    "//services/video_capture/public/interfaces",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/gfx:test_support",
  ]

  data_deps = [
    ":unittest_manifest",
  ]
}

service_manifest("unittest_manifest") {
  name = "video_capture_unittests"
  source = "service_unittest_manifest.json"
}
