Skip to content

Commit fdd88c0

Browse files
authored
tp: Support interned job names in Android track events (#5072)
This change adds support for interning job names in JobScheduler track events. This ensures job names are interned in a buffer that is friendly for PII filtering at the perfetto side. Specifically, this adds the 'job_name_iid' field to the AndroidJobSchedulerJob proto and updates the generated C headers. Welcome to Perfetto! Make sure your PR has a bug/issue attached or has at least a clear description of the problem you are trying to fix. For more details please see https://perfetto.dev/docs/contributing/getting-started
1 parent ae7f501 commit fdd88c0

3 files changed

Lines changed: 27 additions & 0 deletions

File tree

include/perfetto/public/protos/trace/android/android_track_event.pzc.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -920,6 +920,11 @@ PERFETTO_PB_FIELD(perfetto_protos_AndroidJobSchedulerJob,
920920
int64_t,
921921
job_state_flags,
922922
20);
923+
PERFETTO_PB_FIELD(perfetto_protos_AndroidJobSchedulerJob,
924+
VARINT,
925+
uint64_t,
926+
job_name_iid,
927+
21);
923928

924929
PERFETTO_PB_MSG(perfetto_protos_AndroidMessageQueue);
925930
PERFETTO_PB_FIELD(perfetto_protos_AndroidMessageQueue,

protos/perfetto/trace/android/android_track_event.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ message AndroidJobSchedulerJob {
115115
optional int32 public_stop_reason = 19;
116116
// Bitfield of boolean states of the job.
117117
optional int64 job_state_flags = 20;
118+
// Interned Job name.
119+
optional uint64 job_name_iid = 21;
118120
}
119121

120122
// Information about an android.graphics.Bitmap.

src/trace_processor/importers/proto/track_event_parser.cc

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,20 @@ std::optional<base::Status> MaybeParseSourceLocation(
115115
return base::OkStatus();
116116
}
117117

118+
std::optional<base::Status> MaybeParseAndroidJobName(
119+
const protozero::Field& field,
120+
util::ProtoToArgsParser::Delegate& delegate) {
121+
auto* decoder = delegate.GetInternedMessage(
122+
protos::pbzero::InternedData::kAndroidJobName, field.as_uint64());
123+
if (!decoder) {
124+
return std::nullopt;
125+
}
126+
127+
delegate.AddString(util::ProtoToArgsParser::Key("job_scheduler_job.job_name"),
128+
decoder->name());
129+
return base::OkStatus();
130+
}
131+
118132
} // namespace
119133

120134
TrackEventParser::TrackEventParser(TraceProcessorContext* context,
@@ -253,6 +267,12 @@ TrackEventParser::TrackEventParser(TraceProcessorContext* context,
253267
return MaybeParseSourceLocation("chrome_memory_pressure_notification",
254268
field, delegate);
255269
});
270+
args_parser_.AddParsingOverrideForField(
271+
"job_scheduler_job.job_name_iid",
272+
[](const protozero::Field& field,
273+
util::ProtoToArgsParser::Delegate& delegate) {
274+
return MaybeParseAndroidJobName(field, delegate);
275+
});
256276

257277
// Parse DebugAnnotations.
258278
args_parser_.AddParsingOverrideForType(

0 commit comments

Comments
 (0)