userdebug: support perfetto traces as a section in incident reports
This set of patches adds a way for the perfetto command line client to
save a trace to a hardcoded location,
/data/misc/perfetto-traces/incident-trace, and call into incidentd to
start a report, which will include said trace in a new section.
This is not a long-term solution, and is structured to minimize changes
to perfetto and incidentd. The latter is currently architected in a way
where it can only pull pre-defined information out of the system, so
we're resorting to persisting the intermediate results in a hardcoded
location.
This will introduce at most two more linked files at the same time.
Bug: 130543265
Tested: manually on blueline-userdebug
Change-Id: Ie9e2f17cee24706c93d63b88ffd3ded4628bac4e
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index b448fb0..3605181 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -3779,7 +3779,7 @@
// It contains the general config for the logging buffer(s) and the configs for
// all the data source being enabled.
//
-// Next id: 25.
+// Next id: 26.
message TraceConfig {
message BufferConfig {
optional uint32 size_kb = 1;
@@ -4039,6 +4039,21 @@
COMPRESSION_TYPE_DEFLATE = 1;
};
optional CompressionType compression_type = 24;
+
+ // Android-only. Debug builds only. Not for general use. If set, saves a
+ // Dropbox trace into an incident. This field is read by perfetto_cmd, rather
+ // than the tracing service. All fields are mandatory.
+ message IncidentReportConfig {
+ optional string destination_package = 1;
+ optional string destination_class = 2;
+ // Level of filtering in the requested incident. See |Destination| in
+ // frameworks/base/core/proto/android/privacy.proto.
+ optional int32 privacy_level = 3;
+ // If true, do not write the trace into dropbox (i.e. incident only).
+ // Otherwise, write to both dropbox and incident.
+ optional bool skip_dropbox = 4;
+ }
+ optional IncidentReportConfig incident_report_config = 25;
}
// End of protos/perfetto/config/trace_config.proto