# Copyright (C) 2022 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("../../../../gn/test.gni")

source_set("statsd_client") {
  public_deps = [ "../../../tracing/core" ]
  deps = [
    "..:data_source",
    "../../../../gn:default_deps",
    "../../../../include/perfetto/ext/traced",
    "../../../../protos/perfetto/config/statsd:cpp",
    "../../../../protos/perfetto/config/statsd:zero",
    "../../../../protos/perfetto/trace:zero",
    "../../../../protos/perfetto/trace/statsd:cpp",
    "../../../../protos/perfetto/trace/statsd:zero",
    "../../../../protos/third_party/statsd:config_zero",
    "../../../android_internal:headers",
    "../../../android_internal:lazy_library_loader",
    "../../../base",
    "../../../protozero:proto_ring_buffer",
    "../common",
  ]
  sources = [
    "common.cc",
    "common.h",
    "statsd_binder_data_source.cc",
    "statsd_binder_data_source.h",
  ]
}

perfetto_unittest_source_set("unittests") {
  testonly = true
  deps = [
    ":statsd_client",
    "../../../../gn:default_deps",
    "../../../../gn:gtest_and_gmock",
    "../../../../protos/perfetto/config/statsd:cpp",
    "../../../../protos/perfetto/config/statsd:zero",
    "../../../../protos/perfetto/trace:zero",
    "../../../../protos/perfetto/trace/statsd:cpp",
    "../../../../protos/perfetto/trace/statsd:zero",
    "../../../../protos/third_party/statsd:config_zero",
    "../../../../src/base:test_support",
    "../../../../src/tracing/test:test_support",
    "../common:test_support",
  ]
  sources = [ "common_unittest.cc" ]
}
