# Copyright 2018 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 tracing service. It is currently # in the browser process. So, only //content/browser should link to this target. # Others modules should only need the public targets. import("//services/catalog/public/tools/catalog.gni") import("//services/service_manager/public/cpp/service.gni") import("//services/service_manager/public/service_manifest.gni") import("//services/service_manager/public/tools/test/service_test.gni") source_set("lib") { sources = [ "agent_registry.cc", "agent_registry.h", "coordinator.cc", "coordinator.h", "recorder.cc", "recorder.h", "tracing_service.cc", "tracing_service.h", ] public_deps = [ "//base", "//mojo/public/cpp/bindings", "//services/tracing/public/cpp", ] if (is_mac || is_linux || is_android) { sources += [ "perfetto/json_trace_exporter.cc", "perfetto/json_trace_exporter.h", "perfetto/perfetto_service.cc", "perfetto/perfetto_service.h", "perfetto/perfetto_tracing_coordinator.cc", "perfetto/perfetto_tracing_coordinator.h", "perfetto/producer_host.cc", "perfetto/producer_host.h", ] deps = [ "//third_party/perfetto/protos/perfetto/trace:zero", "//third_party/perfetto/protos/perfetto/trace/chrome:minimal_complete_lite", "//third_party/perfetto/protos/perfetto/trace/chrome:zero", ] public_deps += [ "//third_party/perfetto:libperfetto" ] } } service_manifest("manifest") { name = "tracing" source = "manifest.json" } service("tracing") { sources = [ "service_main.cc", ] deps = [ ":lib", "//mojo/public/cpp/system", ] } source_set("tests") { testonly = true sources = [ "agent_registry_unittest.cc", "coordinator_unittest.cc", "public/cpp/trace_event_agent_unittest.cc", "recorder_unittest.cc", "test_util.cc", "test_util.h", ] if (is_mac || is_linux || is_android) { sources += [ "public/cpp/perfetto/trace_event_data_source_unittest.cc" ] } if (!is_android) { sources += [ "tracing_service_unittest.cc" ] } deps = [ ":lib", "//base", "//base/test:test_support", "//mojo/public/cpp/bindings", "//services/service_manager/public/cpp", "//services/service_manager/public/cpp:service_test_support", "//services/service_manager/public/mojom", "//services/tracing:lib", "//testing/gmock", "//testing/gtest", ] if (is_mac || is_linux || is_android) { sources += [ "perfetto/json_trace_exporter_unittest.cc", "perfetto/perfetto_integration_unittest.cc", ] deps += [ "//third_party/perfetto/include/perfetto/protozero:protozero", "//third_party/perfetto/protos/perfetto/common", "//third_party/perfetto/protos/perfetto/trace:lite", "//third_party/perfetto/protos/perfetto/trace:zero", "//third_party/perfetto/protos/perfetto/trace/chrome:lite", "//third_party/perfetto/protos/perfetto/trace/chrome:zero", ] } data_deps = [ ":tracing", ] } service_manifest("unittest_manifest") { name = "tracing_unittests" source = "unittest_manifest.json" } catalog("tests_catalog") { testonly = true embedded_services = [ ":unittest_manifest" ] standalone_services = [ ":manifest" ] }