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

# There should be only one resource coordinator. It is currently
# in the browser process. So, only //content/browser should link to this target.
# Others modules should only need the public targets.
source_set("lib") {
  sources = [
    "memory_instrumentation/coordinator_impl.cc",
    "memory_instrumentation/coordinator_impl.h",
    "memory_instrumentation/graph.cc",
    "memory_instrumentation/graph.h",
    "memory_instrumentation/graph_processor.cc",
    "memory_instrumentation/graph_processor.h",
    "memory_instrumentation/process_map.cc",
    "memory_instrumentation/process_map.h",
    "memory_instrumentation/queued_request.cc",
    "memory_instrumentation/queued_request.h",
    "memory_instrumentation/queued_request_dispatcher.cc",
    "memory_instrumentation/queued_request_dispatcher.h",
    "memory_instrumentation/switches.cc",
    "memory_instrumentation/switches.h",
    "resource_coordinator_service.cc",
    "resource_coordinator_service.h",
  ]

  configs += [ "//build/config/compiler:wexit_time_destructors" ]

  public_deps = [
    "//base",
    "//mojo/public/cpp/bindings",
    "//services/metrics/public/cpp:metrics_cpp",
    "//services/metrics/public/cpp:ukm_builders",
    "//services/metrics/public/mojom",
    "//services/resource_coordinator/public/cpp:resource_coordinator_cpp",
  ]
}

source_set("tests") {
  testonly = true

  sources = [
    "memory_instrumentation/coordinator_impl_unittest.cc",
    "memory_instrumentation/graph_processor_unittest.cc",
    "memory_instrumentation/graph_unittest.cc",
    "memory_instrumentation/process_map_unittest.cc",
    "public/cpp/memory_instrumentation/memory_instrumentation_mojom_traits_unittest.cc",
    "public/cpp/memory_instrumentation/os_metrics_unittest.cc",
    "public/cpp/memory_instrumentation/tracing_integration_unittest.cc",
  ]

  deps = [
    ":lib",
    "//base",
    "//base/test:test_support",
    "//components/ukm:test_support",
    "//mojo/public/cpp/bindings",
    "//services/resource_coordinator/public/cpp:resource_coordinator_cpp",
    "//services/resource_coordinator/public/cpp/memory_instrumentation:memory_instrumentation",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/cpp/test:test_support",
    "//services/service_manager/public/mojom",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
