Trace Redaction - Rename RedactSchedSwitchHarness

RedactSchedSwitchHarness was originally used to manage multiple
every way a switch event could be redacted. This class will be
growing to include all sched events. This renames the class before
making any functional changes.

Bug: 339504266
Change-Id: Ia3222370d1a4b6a002cadc9703a0159d3d2709ac
diff --git a/Android.bp b/Android.bp
index 381e654..86bcbba 100644
--- a/Android.bp
+++ b/Android.bp
@@ -13599,7 +13599,7 @@
         "src/trace_redaction/proto_util.cc",
         "src/trace_redaction/prune_package_list.cc",
         "src/trace_redaction/redact_ftrace_event.cc",
-        "src/trace_redaction/redact_sched_switch.cc",
+        "src/trace_redaction/redact_sched_events.cc",
         "src/trace_redaction/redact_task_newtask.cc",
         "src/trace_redaction/remap_scheduling_events.cc",
         "src/trace_redaction/remove_process_free_comm.cc",
@@ -13629,7 +13629,7 @@
         "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/redact_sched_switch_unittest.cc",
+        "src/trace_redaction/redact_sched_events_unittest.cc",
         "src/trace_redaction/redact_task_newtask_unittest.cc",
         "src/trace_redaction/remap_scheduling_events_unittest.cc",
         "src/trace_redaction/remove_process_free_comm_unittest.cc",
diff --git a/src/trace_redaction/BUILD.gn b/src/trace_redaction/BUILD.gn
index c9ab86e..1077891 100644
--- a/src/trace_redaction/BUILD.gn
+++ b/src/trace_redaction/BUILD.gn
@@ -59,8 +59,8 @@
     "prune_package_list.h",
     "redact_ftrace_event.cc",
     "redact_ftrace_event.h",
-    "redact_sched_switch.cc",
-    "redact_sched_switch.h",
+    "redact_sched_events.cc",
+    "redact_sched_events.h",
     "redact_task_newtask.cc",
     "redact_task_newtask.h",
     "remap_scheduling_events.cc",
@@ -106,7 +106,7 @@
     "filter_sched_waking_events_integrationtest.cc",
     "filter_task_rename_integrationtest.cc",
     "prune_package_list_integrationtest.cc",
-    "redact_sched_switch_integrationtest.cc",
+    "redact_sched_events_integrationtest.cc",
     "remap_scheduling_events_integrationtest.cc",
     "scrub_ftrace_events_integrationtest.cc",
     "scrub_process_stats_integrationtest.cc",
@@ -144,7 +144,7 @@
     "process_thread_timeline_unittest.cc",
     "proto_util_unittest.cc",
     "prune_package_list_unittest.cc",
-    "redact_sched_switch_unittest.cc",
+    "redact_sched_events_unittest.cc",
     "redact_task_newtask_unittest.cc",
     "remap_scheduling_events_unittest.cc",
     "remove_process_free_comm_unittest.cc",
diff --git a/src/trace_redaction/main.cc b/src/trace_redaction/main.cc
index 798d1a0..9a554a6 100644
--- a/src/trace_redaction/main.cc
+++ b/src/trace_redaction/main.cc
@@ -28,7 +28,7 @@
 #include "src/trace_redaction/populate_allow_lists.h"
 #include "src/trace_redaction/prune_package_list.h"
 #include "src/trace_redaction/redact_ftrace_event.h"
-#include "src/trace_redaction/redact_sched_switch.h"
+#include "src/trace_redaction/redact_sched_events.h"
 #include "src/trace_redaction/redact_task_newtask.h"
 #include "src/trace_redaction/remap_scheduling_events.h"
 #include "src/trace_redaction/remove_process_free_comm.h"
@@ -86,7 +86,7 @@
   redactor.emplace_transform<PrunePackageList>();
   redactor.emplace_transform<ScrubProcessStats>();
 
-  auto* comms_harness = redactor.emplace_transform<RedactSchedSwitchHarness>();
+  auto* comms_harness = redactor.emplace_transform<RedactSchedEvents>();
   comms_harness->emplace_transform<ClearComms>();
 
   auto* redact_ftrace_events = redactor.emplace_transform<RedactFtraceEvent>();
diff --git a/src/trace_redaction/redact_sched_switch.cc b/src/trace_redaction/redact_sched_events.cc
similarity index 88%
rename from src/trace_redaction/redact_sched_switch.cc
rename to src/trace_redaction/redact_sched_events.cc
index d2ce751..193643e 100644
--- a/src/trace_redaction/redact_sched_switch.cc
+++ b/src/trace_redaction/redact_sched_events.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "src/trace_redaction/redact_sched_switch.h"
+#include "src/trace_redaction/redact_sched_events.h"
 
 #include "perfetto/protozero/scattered_heap_buffer.h"
 #include "src/trace_processor/util/status_macros.h"
@@ -106,9 +106,9 @@
 // collection of ftrace event messages) because data in a sched_switch message
 // is needed in order to know if the event should be added to the bundle.
 
-RedactSchedSwitchHarness::Modifier::~Modifier() = default;
+SchedEventModifier::~SchedEventModifier() = default;
 
-base::Status RedactSchedSwitchHarness::Transform(const Context& context,
+base::Status RedactSchedEvents::Transform(const Context& context,
                                                  std::string* packet) const {
   protozero::HeapBuffered<protos::pbzero::TracePacket> message;
   protozero::ProtoDecoder decoder(*packet);
@@ -117,7 +117,7 @@
        field = decoder.ReadField()) {
     if (field.id() == protos::pbzero::TracePacket::kFtraceEventsFieldNumber) {
       RETURN_IF_ERROR(
-          TransformFtraceEvents(context, field, message->set_ftrace_events()));
+          OnFtraceEvents(context, field, message->set_ftrace_events()));
     } else {
       proto_util::AppendField(field, message.get());
     }
@@ -128,7 +128,7 @@
   return base::OkStatus();
 }
 
-base::Status RedactSchedSwitchHarness::TransformFtraceEvents(
+base::Status RedactSchedEvents::OnFtraceEvents(
     const Context& context,
     protozero::Field ftrace_events,
     protos::pbzero::FtraceEventBundle* message) const {
@@ -141,13 +141,13 @@
       decoder.FindField(protos::pbzero::FtraceEventBundle::kCpuFieldNumber);
   if (!cpu.valid()) {
     return base::ErrStatus(
-        "RedactSchedSwitchHarness: missing cpu in ftrace event bundle.");
+        "RedactSchedEvents: missing cpu in ftrace event bundle.");
   }
 
   for (auto field = decoder.ReadField(); field.valid();
        field = decoder.ReadField()) {
     if (field.id() == protos::pbzero::FtraceEventBundle::kEventFieldNumber) {
-      RETURN_IF_ERROR(TransformFtraceEvent(context, cpu.as_int32(), field,
+      RETURN_IF_ERROR(OnFtraceEvent(context, cpu.as_int32(), field,
                                            message->add_event()));
       continue;
     }
@@ -156,7 +156,7 @@
         protos::pbzero::FtraceEventBundle::kCompactSchedFieldNumber) {
       protos::pbzero::FtraceEventBundle::CompactSched::Decoder comp_sched(
           field.as_bytes());
-      RETURN_IF_ERROR(TransformCompSched(context, cpu.as_int32(), comp_sched,
+      RETURN_IF_ERROR(OnCompSched(context, cpu.as_int32(), comp_sched,
                                          message->set_compact_sched()));
       continue;
     }
@@ -167,7 +167,7 @@
   return base::OkStatus();
 }
 
-base::Status RedactSchedSwitchHarness::TransformFtraceEvent(
+base::Status RedactSchedEvents::OnFtraceEvent(
     const Context& context,
     int32_t cpu,
     protozero::Field ftrace_event,
@@ -181,7 +181,7 @@
       decoder.FindField(protos::pbzero::FtraceEvent::kTimestampFieldNumber);
   if (!ts.valid()) {
     return base::ErrStatus(
-        "RedactSchedSwitchHarness: missing timestamp in ftrace event.");
+        "RedactSchedEvents: missing timestamp in ftrace event.");
   }
 
   std::string scratch_str;
@@ -192,7 +192,7 @@
       case protos::pbzero::FtraceEvent::kSchedSwitchFieldNumber: {
         protos::pbzero::SchedSwitchFtraceEvent::Decoder sched_switch(
             field.as_bytes());
-        RETURN_IF_ERROR(TransformFtraceEventSchedSwitch(
+        RETURN_IF_ERROR(OnFtraceEventSwitch(
             context, ts.as_uint64(), cpu, sched_switch, &scratch_str,
             message->set_sched_switch()));
         break;
@@ -201,7 +201,7 @@
       case protos::pbzero::FtraceEvent::kSchedWakingFieldNumber: {
         protos::pbzero::SchedWakingFtraceEvent::Decoder sched_waking(
             field.as_bytes());
-        RETURN_IF_ERROR(TransformFtraceEventSchedWaking(
+        RETURN_IF_ERROR(OnFtraceEventWaking(
             context, ts.as_uint64(), cpu, sched_waking, &scratch_str,
             message->set_sched_waking()));
         break;
@@ -217,7 +217,7 @@
   return base::OkStatus();
 }
 
-base::Status RedactSchedSwitchHarness::TransformFtraceEventSchedSwitch(
+base::Status RedactSchedEvents::OnFtraceEventSwitch(
     const Context& context,
     uint64_t ts,
     int32_t cpu,
@@ -236,7 +236,7 @@
 
   if (!std::all_of(has_fields.begin(), has_fields.end(), IsTrue)) {
     return base::ErrStatus(
-        "RedactSchedSwitchHarness: missing required SchedSwitchFtraceEvent "
+        "RedactSchedEvents: missing required SchedSwitchFtraceEvent "
         "field.");
   }
 
@@ -270,7 +270,7 @@
   return base::OkStatus();
 }
 
-base::Status RedactSchedSwitchHarness::TransformFtraceEventSchedWaking(
+base::Status RedactSchedEvents::OnFtraceEventWaking(
     const Context& context,
     uint64_t ts,
     int32_t cpu,
@@ -287,7 +287,7 @@
 
   if (!std::all_of(has_fields.begin(), has_fields.end(), IsTrue)) {
     return base::ErrStatus(
-        "RedactSchedSwitchHarness: missing required SchedWakingFtraceEvent "
+        "RedactSchedEvents: missing required SchedWakingFtraceEvent "
         "field.");
   }
 
@@ -311,7 +311,7 @@
   return base::OkStatus();
 }
 
-base::Status RedactSchedSwitchHarness::TransformCompSched(
+base::Status RedactSchedEvents::OnCompSched(
     const Context& context,
     int32_t cpu,
     protos::pbzero::FtraceEventBundle::CompactSched::Decoder& comp_sched,
@@ -339,13 +339,13 @@
 
     if (index < 0) {
       return base::ErrStatus(
-          "RedactSchedSwitchHarness: failed to insert string into intern "
+          "RedactSchedEvents: failed to insert string into intern "
           "table.");
     }
   }
 
   if (std::any_of(has_switch_fields.begin(), has_switch_fields.end(), IsTrue)) {
-    RETURN_IF_ERROR(TransformCompSchedSwitch(context, cpu, comp_sched,
+    RETURN_IF_ERROR(OnCompSchedSwitch(context, cpu, comp_sched,
                                              &intern_table, message));
   }
 
@@ -362,7 +362,7 @@
   return base::OkStatus();
 }
 
-base::Status RedactSchedSwitchHarness::TransformCompSchedSwitch(
+base::Status RedactSchedEvents::OnCompSchedSwitch(
     const Context& context,
     int32_t cpu,
     protos::pbzero::FtraceEventBundle::CompactSched::Decoder& comp_sched,
@@ -382,8 +382,7 @@
 
   if (!std::all_of(has_fields.begin(), has_fields.end(), IsTrue)) {
     return base::ErrStatus(
-        "RedactSchedSwitchHarness: missing required "
-        "FtraceEventBundle::CompactSched switch field.");
+        "RedactSchedEvents: missing required FtraceEventBundle::CompactSched switch field.");
   }
 
   std::array<bool, 3> parse_errors = {false, false, false};
@@ -393,8 +392,7 @@
   auto it_comm = comp_sched.switch_next_comm_index(&parse_errors.at(2));
 
   if (std::any_of(parse_errors.begin(), parse_errors.end(), IsTrue)) {
-    return base::ErrStatus(
-        "RedactSchedSwitchHarness: failed to parse CompactSched.");
+    return base::ErrStatus("RedactSchedEvents: failed to parse CompactSched.");
   }
 
   std::string scratch_str;
@@ -422,8 +420,7 @@
 
     if (found < 0) {
       return base::ErrStatus(
-          "RedactSchedSwitchHarness: failed to insert string into intern "
-          "table.");
+          "RedactSchedEvents: failed to insert string into intern table.");
     }
 
     packed_comm.Append(found);
@@ -436,7 +433,7 @@
 
   if (it_ts || it_pid || it_comm) {
     return base::ErrStatus(
-        "RedactSchedSwitchHarness: uneven associative arrays in "
+        "RedactSchedEvents: uneven associative arrays in "
         "FtraceEventBundle::CompactSched (switch).");
   }
 
@@ -475,7 +472,7 @@
 
   if (!std::all_of(passed_through.begin(), passed_through.end(), IsTrue)) {
     return base::ErrStatus(
-        "RedactSchedSwitchHarness: missing required "
+        "RedactSchedEvents: missing required "
         "FtraceEventBundle::CompactSched switch field.");
   }
 
diff --git a/src/trace_redaction/redact_sched_switch.h b/src/trace_redaction/redact_sched_events.h
similarity index 72%
rename from src/trace_redaction/redact_sched_switch.h
rename to src/trace_redaction/redact_sched_events.h
index 906eb11..b393353 100644
--- a/src/trace_redaction/redact_sched_switch.h
+++ b/src/trace_redaction/redact_sched_events.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef SRC_TRACE_REDACTION_REDACT_SCHED_SWITCH_H_
-#define SRC_TRACE_REDACTION_REDACT_SCHED_SWITCH_H_
+#ifndef SRC_TRACE_REDACTION_REDACT_SCHED_EVENTS_H_
+#define SRC_TRACE_REDACTION_REDACT_SCHED_EVENTS_H_
 
 #include "src/trace_redaction/trace_redaction_framework.h"
 
@@ -44,22 +44,18 @@
   std::vector<std::string_view> interned_comms_;
 };
 
-// TODO(vaage): Rename this class. When it was first created, it only handled
-// switch events, so having "switch" in the name sense. Now that it is
-// expanding to include waking events, a more general name is needed (e.g.
-// scheduling covers both switch and waking events).
-class RedactSchedSwitchHarness : public TransformPrimitive {
+class SchedEventModifier {
  public:
-  class Modifier {
-   public:
-    virtual ~Modifier();
-    virtual base::Status Modify(const Context& context,
-                                uint64_t ts,
-                                int32_t cpu,
-                                int32_t* pid,
-                                std::string* comm) const = 0;
-  };
+  virtual ~SchedEventModifier();
+  virtual base::Status Modify(const Context& context,
+                              uint64_t ts,
+                              int32_t cpu,
+                              int32_t* pid,
+                              std::string* comm) const = 0;
+};
 
+class RedactSchedEvents : public TransformPrimitive {
+ public:
   base::Status Transform(const Context& context,
                          std::string* packet) const override;
 
@@ -69,19 +65,19 @@
   }
 
  private:
-  base::Status TransformFtraceEvents(
+  base::Status OnFtraceEvents(
       const Context& context,
       protozero::Field ftrace_events,
       protos::pbzero::FtraceEventBundle* message) const;
 
-  base::Status TransformFtraceEvent(const Context& context,
+  base::Status OnFtraceEvent(const Context& context,
                                     int32_t cpu,
                                     protozero::Field ftrace_event,
                                     protos::pbzero::FtraceEvent* message) const;
 
   // scratch_str is a reusable string, allowing comm modifications to be done in
   // a shared buffer, avoiding allocations when processing ftrace events.
-  base::Status TransformFtraceEventSchedSwitch(
+  base::Status OnFtraceEventSwitch(
       const Context& context,
       uint64_t ts,
       int32_t cpu,
@@ -89,7 +85,7 @@
       std::string* scratch_str,
       protos::pbzero::SchedSwitchFtraceEvent* message) const;
 
-  base::Status TransformFtraceEventSchedWaking(
+  base::Status OnFtraceEventWaking(
       const Context& context,
       uint64_t ts,
       int32_t cpu,
@@ -97,23 +93,23 @@
       std::string* scratch_str,
       protos::pbzero::SchedWakingFtraceEvent* message) const;
 
-  base::Status TransformCompSched(
+  base::Status OnCompSched(
       const Context& context,
       int32_t cpu,
       protos::pbzero::FtraceEventBundle::CompactSched::Decoder& comp_sched,
       protos::pbzero::FtraceEventBundle::CompactSched* message) const;
 
-  base::Status TransformCompSchedSwitch(
+  base::Status OnCompSchedSwitch(
       const Context& context,
       int32_t cpu,
       protos::pbzero::FtraceEventBundle::CompactSched::Decoder& comp_sched,
       InternTable* intern_table,
       protos::pbzero::FtraceEventBundle::CompactSched* message) const;
 
-  std::unique_ptr<Modifier> modifier_;
+  std::unique_ptr<SchedEventModifier> modifier_;
 };
 
-class ClearComms : public RedactSchedSwitchHarness::Modifier {
+class ClearComms : public SchedEventModifier {
   base::Status Modify(const Context& context,
                       uint64_t ts,
                       int32_t cpu,
@@ -123,4 +119,4 @@
 
 }  // namespace perfetto::trace_redaction
 
-#endif  // SRC_TRACE_REDACTION_REDACT_SCHED_SWITCH_H_
+#endif  // SRC_TRACE_REDACTION_REDACT_SCHED_EVENTS_H_
diff --git a/src/trace_redaction/redact_sched_switch_integrationtest.cc b/src/trace_redaction/redact_sched_events_integrationtest.cc
similarity index 97%
rename from src/trace_redaction/redact_sched_switch_integrationtest.cc
rename to src/trace_redaction/redact_sched_events_integrationtest.cc
index 247d44b..59e582f 100644
--- a/src/trace_redaction/redact_sched_switch_integrationtest.cc
+++ b/src/trace_redaction/redact_sched_events_integrationtest.cc
@@ -22,7 +22,7 @@
 #include "src/base/test/status_matchers.h"
 #include "src/trace_redaction/collect_timeline_events.h"
 #include "src/trace_redaction/find_package_uid.h"
-#include "src/trace_redaction/redact_sched_switch.h"
+#include "src/trace_redaction/redact_sched_events.h"
 #include "src/trace_redaction/trace_redaction_framework.h"
 #include "src/trace_redaction/trace_redaction_integration_fixture.h"
 #include "src/trace_redaction/trace_redactor.h"
@@ -95,7 +95,7 @@
     trace_redactor()->emplace_collect<CollectTimelineEvents>();
 
     auto* harness =
-        trace_redactor()->emplace_transform<RedactSchedSwitchHarness>();
+        trace_redactor()->emplace_transform<RedactSchedEvents>();
     harness->emplace_transform<ClearComms>();
 
     context()->package_name = "com.Unity.com.unity.multiplayer.samples.coop";
diff --git a/src/trace_redaction/redact_sched_switch_unittest.cc b/src/trace_redaction/redact_sched_events_unittest.cc
similarity index 91%
rename from src/trace_redaction/redact_sched_switch_unittest.cc
rename to src/trace_redaction/redact_sched_events_unittest.cc
index cd05794..4885fa2 100644
--- a/src/trace_redaction/redact_sched_switch_unittest.cc
+++ b/src/trace_redaction/redact_sched_events_unittest.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "src/trace_redaction/redact_sched_switch.h"
+#include "src/trace_redaction/redact_sched_events.h"
 #include "src/base/test/status_matchers.h"
 #include "test/gtest_and_gmock.h"
 
@@ -36,6 +36,7 @@
 constexpr int32_t kPidA = 11;
 constexpr int32_t kPidB = 12;
 constexpr int32_t kPidC = 13;
+constexpr int32_t kPidD = 14;
 
 constexpr int32_t kCpuA = 0;
 constexpr int32_t kCpuB = 1;
@@ -51,7 +52,8 @@
 constexpr auto kCommC = "comm-c";
 constexpr auto kCommNone = "";
 
-class ChangePidToMax : public RedactSchedSwitchHarness::Modifier {
+template<int32_t new_pid>
+class ChangePidTo : public SchedEventModifier {
  public:
   base::Status Modify(const Context& context,
                       uint64_t ts,
@@ -59,7 +61,7 @@
                       int32_t* pid,
                       std::string*) const override {
     if (!context.timeline->PidConnectsToUid(ts, *pid, *context.package_uid)) {
-      *pid = std::numeric_limits<int32_t>::max();
+      *pid = new_pid;
     }
 
     return base::OkStatus();
@@ -124,7 +126,7 @@
 // In this case, the target uid will be UID A. That means the comm values for
 // PID B should be removed, and the comm values for PID A should remain.
 TEST_F(RedactSchedSwitchFtraceEventTest, KeepsTargetCommValues) {
-  RedactSchedSwitchHarness redact;
+  RedactSchedEvents redact;
   redact.emplace_transform<ClearComms>();
 
   context_.package_uid = kUidA;
@@ -158,7 +160,7 @@
 // verifies all comm values will be removed when testing against an unused
 // uid.
 TEST_F(RedactSchedSwitchFtraceEventTest, RemovesAllCommsIfPackageDoesntExist) {
-  RedactSchedSwitchHarness redact;
+  RedactSchedEvents redact;
   redact.emplace_transform<ClearComms>();
 
   context_.package_uid = kUidC;
@@ -236,7 +238,7 @@
 
   auto packet_buffer = packet_.SerializeAsString();
 
-  RedactSchedSwitchHarness redact;
+  RedactSchedEvents redact;
   redact.emplace_transform<ClearComms>();
 
   ASSERT_OK(redact.Transform(context_, &packet_buffer));
@@ -270,7 +272,7 @@
 
   auto packet_buffer = packet_.SerializeAsString();
 
-  RedactSchedSwitchHarness redact;
+  RedactSchedEvents redact;
   redact.emplace_transform<ClearComms>();
 
   ASSERT_OK(redact.Transform(context_, &packet_buffer));
@@ -305,7 +307,7 @@
 
   auto packet_buffer = packet_.SerializeAsString();
 
-  RedactSchedSwitchHarness redact;
+  RedactSchedEvents redact;
   redact.emplace_transform<ClearComms>();
 
   ASSERT_OK(redact.Transform(context_, &packet_buffer));
@@ -339,8 +341,8 @@
 
   auto packet_buffer = packet_.SerializeAsString();
 
-  RedactSchedSwitchHarness redact;
-  redact.emplace_transform<ChangePidToMax>();
+  RedactSchedEvents redact;
+  redact.emplace_transform<ChangePidTo<kPidC>>();
 
   ASSERT_OK(redact.Transform(context_, &packet_buffer));
 
@@ -357,7 +359,9 @@
 
   ASSERT_EQ(compact_sched.switch_next_pid_size(), 2);
   ASSERT_EQ(compact_sched.switch_next_pid().at(0), kPidA);
-  ASSERT_NE(compact_sched.switch_next_pid().at(1), kPidB);
+
+  // Because Pid B was not connected to Uid A, it should have its pid changed.
+  ASSERT_EQ(compact_sched.switch_next_pid().at(1), kPidC);
 }
 
 class RedactSchedWakingFtraceEventTest : public testing::Test {
@@ -414,7 +418,7 @@
 };
 
 TEST_F(RedactSchedWakingFtraceEventTest, WakeeKeepsCommWhenConnectedToPackage) {
-  RedactSchedSwitchHarness redact;
+  RedactSchedEvents redact;
   redact.emplace_transform<ClearComms>();
 
   context_.package_uid = kUidB;
@@ -437,7 +441,7 @@
 
 TEST_F(RedactSchedWakingFtraceEventTest,
        WakeeLosesCommWhenNotConnectedToPackage) {
-  RedactSchedSwitchHarness redact;
+  RedactSchedEvents redact;
   redact.emplace_transform<ClearComms>();
 
   context_.package_uid = kUidA;
@@ -459,8 +463,8 @@
 }
 
 TEST_F(RedactSchedWakingFtraceEventTest, WakeeKeepsPidWhenConnectedToPackage) {
-  RedactSchedSwitchHarness redact;
-  redact.emplace_transform<ChangePidToMax>();
+  RedactSchedEvents redact;
+  redact.emplace_transform<ChangePidTo<kPidD>>();
 
   context_.package_uid = kUidB;
 
@@ -477,13 +481,15 @@
   ASSERT_EQ(events.size(), 2u);
 
   ASSERT_EQ(events.front().sched_waking().pid(), kPidB);
-  ASSERT_NE(events.back().sched_waking().pid(), kPidC);
+
+  // Because Pid C was not connected to Uid B, it should have its pid changed.
+  ASSERT_EQ(events.back().sched_waking().pid(), kPidD);
 }
 
 TEST_F(RedactSchedWakingFtraceEventTest,
        WakeeLosesPidWhenNotConnectedToPackage) {
-  RedactSchedSwitchHarness redact;
-  redact.emplace_transform<ChangePidToMax>();
+  RedactSchedEvents redact;
+  redact.emplace_transform<ChangePidTo<kPidD>>();
 
   context_.package_uid = kUidA;
 
@@ -499,13 +505,14 @@
 
   ASSERT_EQ(events.size(), 2u);
 
-  ASSERT_NE(events.front().sched_waking().pid(), kPidB);
-  ASSERT_NE(events.back().sched_waking().pid(), kPidC);
+  // Both pids should have changed.
+  ASSERT_EQ(events.at(0).sched_waking().pid(), kPidD);
+  ASSERT_EQ(events.at(1).sched_waking().pid(), kPidD);
 }
 
 TEST_F(RedactSchedWakingFtraceEventTest, WakerPidIsLeftUnaffected) {
-  RedactSchedSwitchHarness redact;
-  redact.emplace_transform<ChangePidToMax>();
+  RedactSchedEvents redact;
+  redact.emplace_transform<ChangePidTo<kPidD>>();
 
   context_.package_uid = kUidB;
 
@@ -521,8 +528,11 @@
 
   ASSERT_EQ(events.size(), 2u);
 
-  ASSERT_EQ(events.front().pid(), static_cast<uint32_t>(kPidA));
-  ASSERT_EQ(events.back().pid(), static_cast<uint32_t>(kPidA));
+  // The waker in the ftrace event waking event should change, but by another
+  // primitive. This case only appears in the ftrace events because the waker is
+  // inferred in the comp sched case.
+  ASSERT_EQ(events.at(0).pid(), static_cast<uint32_t>(kPidA));
+  ASSERT_EQ(events.at(1).pid(), static_cast<uint32_t>(kPidA));
 }
 
 }  // namespace perfetto::trace_redaction
diff --git a/src/trace_redaction/redact_task_newtask.h b/src/trace_redaction/redact_task_newtask.h
index 61c8b52..b162a9b 100644
--- a/src/trace_redaction/redact_task_newtask.h
+++ b/src/trace_redaction/redact_task_newtask.h
@@ -18,7 +18,7 @@
 #define SRC_TRACE_REDACTION_REDACT_TASK_NEWTASK_H_
 
 #include "src/trace_redaction/redact_ftrace_event.h"
-#include "src/trace_redaction/redact_sched_switch.h"
+#include "src/trace_redaction/redact_sched_events.h"
 #include "src/trace_redaction/trace_redaction_framework.h"
 
 namespace perfetto::trace_redaction {
@@ -42,7 +42,7 @@
   }
 
  public:
-  std::unique_ptr<RedactSchedSwitchHarness::Modifier> modifier_;
+  std::unique_ptr<SchedEventModifier> modifier_;
 };
 
 }  // namespace perfetto::trace_redaction