Trace Redaction - Timeline and Build Timeline

The timeline data structure is critical to future operations. The
timeline is a query optimized structure that, given a pid and ts,
will traverse the thread hierarchy to find which package the
thread belongs to.

The thread-to-package relationship is not fixed. Thread id recycling
means that threads will wonder between packages. This means a thread
that didn't need to be redacted, could suddenly need to be redacted.

Bug: 318576499
Bug: 318576092
Bug: 319850081
Change-Id: Iff0d20d5d762b70898c1f3680af3430ac8262cf1
diff --git a/Android.bp b/Android.bp
index d2705cf..1a7fd1d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -12788,11 +12788,15 @@
 filegroup {
     name: "perfetto_src_trace_redaction_trace_redaction",
     srcs: [
+        "src/trace_redaction/build_timeline.cc",
         "src/trace_redaction/find_package_uid.cc",
+        "src/trace_redaction/optimize_timeline.cc",
         "src/trace_redaction/populate_allow_lists.cc",
+        "src/trace_redaction/process_thread_timeline.cc",
         "src/trace_redaction/proto_util.cc",
         "src/trace_redaction/prune_package_list.cc",
         "src/trace_redaction/scrub_ftrace_events.cc",
+        "src/trace_redaction/scrub_process_trees.cc",
         "src/trace_redaction/scrub_trace_packet.cc",
         "src/trace_redaction/trace_redaction_framework.cc",
         "src/trace_redaction/trace_redactor.cc",
@@ -12803,7 +12807,9 @@
 filegroup {
     name: "perfetto_src_trace_redaction_unittests",
     srcs: [
+        "src/trace_redaction/build_timeline_unittest.cc",
         "src/trace_redaction/find_package_uid_unittest.cc",
+        "src/trace_redaction/process_thread_timeline_unittest.cc",
         "src/trace_redaction/proto_util_unittest.cc",
         "src/trace_redaction/prune_package_list_unittest.cc",
         "src/trace_redaction/scrub_ftrace_events_unittest.cc",