# Copyright (C) 2024 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("trace_redaction") {
  sources = [
    "find_package_uid.cc",
    "find_package_uid.h",
    "populate_allow_lists.cc",
    "populate_allow_lists.h",
    "prune_package_list.cc",
    "prune_package_list.h",
    "scrub_trace_packet.cc",
    "scrub_trace_packet.h",
    "trace_redaction_framework.cc",
    "trace_redaction_framework.h",
    "trace_redactor.cc",
    "trace_redactor.h",
  ]
  deps = [
    "../../gn:default_deps",
    "../../include/perfetto/base",
    "../../include/perfetto/ext/base",
    "../../include/perfetto/protozero:protozero",
    "../../include/perfetto/trace_processor:storage",
    "../../protos/perfetto/trace:non_minimal_cpp",
    "../../protos/perfetto/trace:non_minimal_zero",
    "../../protos/perfetto/trace/android:cpp",
    "../../protos/perfetto/trace/android:zero",
    "../trace_processor:storage_minimal",
  ]
}

source_set("integrationtests") {
  testonly = true
  sources = [ "trace_redactor_integrationtest.cc" ]
  deps = [
    ":trace_redaction",
    "../../gn:default_deps",
    "../../gn:gtest_and_gmock",
    "../../include/perfetto/ext/base",
    "../../protos/perfetto/trace:non_minimal_zero",
    "../../protos/perfetto/trace/android:zero",
    "../base:test_support",
  ]
}

perfetto_unittest_source_set("unittests") {
  testonly = true
  sources = [
    "find_package_uid_unittest.cc",
    "prune_package_list_unittest.cc",
    "scrub_trace_packet_unittest.cc",
  ]
  deps = [
    ":trace_redaction",
    "../../gn:default_deps",
    "../../gn:gtest_and_gmock",
    "../../protos/perfetto/trace:non_minimal_cpp",
    "../../protos/perfetto/trace:zero",
    "../../protos/perfetto/trace/android:cpp",
    "../../protos/perfetto/trace/ps:cpp",
    "../../protos/perfetto/trace/ps:zero",
    "../base:test_support",
  ]
}
