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

import("//build/config/jumbo.gni")
import("//third_party/blink/renderer/platform/platform.gni")

blink_platform_sources("instrumentation") {
  sources = [
    "resource_coordinator/frame_resource_coordinator.cc",
    "resource_coordinator/frame_resource_coordinator.h",
    "resource_coordinator/renderer_resource_coordinator.cc",
    "resource_coordinator/renderer_resource_coordinator.h",
    "tracing/memory_cache_dump_provider.cc",
    "tracing/memory_cache_dump_provider.h",
    "tracing/trace_event.cc",
    "tracing/trace_event.h",
    "tracing/traced_value.cc",
    "tracing/traced_value.h",
    "tracing/web_memory_allocator_dump.cc",
    "tracing/web_memory_allocator_dump.h",
    "tracing/web_process_memory_dump.cc",
    "tracing/web_process_memory_dump.h",
  ]

  deps = [
    "//services/service_manager/public/cpp",
  ]
}

jumbo_source_set("unit_tests") {
  testonly = true

  sources = [
    "tracing/traced_value_test.cc",
    "tracing/web_process_memory_dump_test.cc",
  ]

  deps = [
    "//base",
    "//base/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]

  configs += [ "//third_party/blink/renderer/platform:blink_platform_config" ]
}
