Look up proto type definitions separately
Creating nested types will cause type collisions. Instead search for the type separately. Also fixes an issue parsing sf traces from Q. Fixes: 156034870 Test: yarn run dev Test: open sf trace from q Change-Id: I3c2a283e56985bfee56633a5e914b83ac2a0cf3b
This commit is contained in:
@@ -15,11 +15,11 @@
|
||||
*/
|
||||
|
||||
|
||||
import jsonProtoDefs from 'frameworks/base/core/proto/android/server/windowmanagertrace.proto'
|
||||
import jsonProtoLogDefs from 'frameworks/base/core/proto/android/server/protolog.proto'
|
||||
import jsonProtoDefsSF from 'frameworks/native/services/surfaceflinger/layerproto/layerstrace.proto'
|
||||
import jsonProtoDefsTrans from 'frameworks/native/cmds/surfacereplayer/proto/src/trace.proto'
|
||||
import jsonProtoDefsWL from 'WaylandSafePath/waylandtrace.proto'
|
||||
import jsonProtoDefsWm from 'frameworks/base/core/proto/android/server/windowmanagertrace.proto'
|
||||
import jsonProtoDefsProtoLog from 'frameworks/base/core/proto/android/server/protolog.proto'
|
||||
import jsonProtoDefsSf from 'frameworks/native/services/surfaceflinger/layerproto/layerstrace.proto'
|
||||
import jsonProtoDefsTransaction from 'frameworks/native/cmds/surfacereplayer/proto/src/trace.proto'
|
||||
import jsonProtoDefsWl from 'WaylandSafePath/waylandtrace.proto'
|
||||
import jsonProtoDefsSysUi from 'frameworks/base/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto'
|
||||
import jsonProtoDefsLauncher from 'packages/apps/Launcher3/protos/launcher_trace_file.proto'
|
||||
import protobuf from 'protobufjs'
|
||||
@@ -33,31 +33,16 @@ import { transform_launcher_trace } from './transform_launcher.js'
|
||||
import { fill_transform_data } from './matrix_utils.js'
|
||||
import { mp4Decoder } from './decodeVideo.js'
|
||||
|
||||
var protoDefs = protobuf.Root.fromJSON(jsonProtoDefs)
|
||||
.addJSON(jsonProtoLogDefs.nested)
|
||||
.addJSON(jsonProtoDefsSF.nested)
|
||||
.addJSON(jsonProtoDefsTrans.nested)
|
||||
.addJSON(jsonProtoDefsWL.nested)
|
||||
.addJSON(jsonProtoDefsSysUi.nested)
|
||||
.addJSON(jsonProtoDefsLauncher.nested);
|
||||
|
||||
var WindowTraceMessage = protoDefs.lookupType(
|
||||
"com.android.server.wm.WindowManagerTraceFileProto");
|
||||
var WindowMessage = protoDefs.lookupType(
|
||||
"com.android.server.wm.WindowManagerServiceDumpProto");
|
||||
var LayersMessage = protoDefs.lookupType("android.surfaceflinger.LayersProto");
|
||||
var LayersTraceMessage = protoDefs.lookupType("android.surfaceflinger.LayersTraceFileProto");
|
||||
var TransactionMessage = protoDefs.lookupType("Trace");
|
||||
var WaylandMessage = protoDefs.lookupType("org.chromium.arc.wayland_composer.OutputStateProto");
|
||||
var WaylandTraceMessage = protoDefs.lookupType("org.chromium.arc.wayland_composer.TraceFileProto");
|
||||
var WindowLogMessage = protoDefs.lookupType(
|
||||
"com.android.server.protolog.ProtoLogFileProto");
|
||||
var LogMessage = protoDefs.lookupType(
|
||||
"com.android.server.protolog.ProtoLogMessage");
|
||||
var SystemUiTraceMessage = protoDefs.lookupType(
|
||||
"com.android.systemui.tracing.SystemUiTraceFileProto");
|
||||
var LauncherTraceMessage = protoDefs.lookupType(
|
||||
"com.android.launcher3.tracing.LauncherTraceFileProto");
|
||||
var WmTraceMessage = lookup_type(jsonProtoDefsWm, "com.android.server.wm.WindowManagerTraceFileProto");
|
||||
var WmDumpMessage = lookup_type(jsonProtoDefsWm, "com.android.server.wm.WindowManagerServiceDumpProto");
|
||||
var SfTraceMessage = lookup_type(jsonProtoDefsSf, "android.surfaceflinger.LayersTraceFileProto");
|
||||
var SfDumpMessage = lookup_type(jsonProtoDefsSf, "android.surfaceflinger.LayersProto");
|
||||
var SfTransactionTraceMessage = lookup_type(jsonProtoDefsTransaction, "Trace");
|
||||
var WaylandTraceMessage = lookup_type(jsonProtoDefsWl, "org.chromium.arc.wayland_composer.TraceFileProto");
|
||||
var WaylandDumpMessage = lookup_type(jsonProtoDefsWl, "org.chromium.arc.wayland_composer.OutputStateProto");
|
||||
var ProtoLogMessage = lookup_type(jsonProtoDefsProtoLog, "com.android.server.protolog.ProtoLogFileProto");
|
||||
var SystemUiTraceMessage = lookup_type(jsonProtoDefsSysUi, "com.android.systemui.tracing.SystemUiTraceFileProto");
|
||||
var LauncherTraceMessage = lookup_type(jsonProtoDefsLauncher, "com.android.launcher3.tracing.LauncherTraceFileProto");
|
||||
|
||||
const LAYER_TRACE_MAGIC_NUMBER = [0x09, 0x4c, 0x59, 0x52, 0x54, 0x52, 0x41, 0x43, 0x45] // .LYRTRACE
|
||||
const WINDOW_TRACE_MAGIC_NUMBER = [0x09, 0x57, 0x49, 0x4e, 0x54, 0x52, 0x41, 0x43, 0x45] // .WINTRACE
|
||||
@@ -116,7 +101,7 @@ const FILE_TYPES = {
|
||||
dataType: DATA_TYPES.WINDOW_MANAGER,
|
||||
decoder: protoDecoder,
|
||||
decoderParams: {
|
||||
protoType: WindowTraceMessage,
|
||||
protoType: WmTraceMessage,
|
||||
transform: transform_window_trace,
|
||||
timeline: true,
|
||||
},
|
||||
@@ -126,7 +111,7 @@ const FILE_TYPES = {
|
||||
dataType: DATA_TYPES.SURFACE_FLINGER,
|
||||
decoder: protoDecoder,
|
||||
decoderParams: {
|
||||
protoType: LayersTraceMessage,
|
||||
protoType: SfTraceMessage,
|
||||
transform: transform_layers_trace,
|
||||
timeline: true,
|
||||
},
|
||||
@@ -146,7 +131,7 @@ const FILE_TYPES = {
|
||||
dataType: DATA_TYPES.SURFACE_FLINGER,
|
||||
decoder: protoDecoder,
|
||||
decoderParams: {
|
||||
protoType: LayersMessage,
|
||||
protoType: SfDumpMessage,
|
||||
transform: (decoded) => transform_layers(true /*includesCompositionState*/, decoded),
|
||||
timeline: false,
|
||||
},
|
||||
@@ -156,7 +141,7 @@ const FILE_TYPES = {
|
||||
dataType: DATA_TYPES.WINDOW_MANAGER,
|
||||
decoder: protoDecoder,
|
||||
decoderParams: {
|
||||
protoType: WindowMessage,
|
||||
protoType: WmDumpMessage,
|
||||
transform: transform_window_service,
|
||||
timeline: false,
|
||||
},
|
||||
@@ -166,7 +151,7 @@ const FILE_TYPES = {
|
||||
dataType: DATA_TYPES.WAYLAND,
|
||||
decoder: protoDecoder,
|
||||
decoderParams: {
|
||||
protoType: WaylandMessage,
|
||||
protoType: WaylandDumpMessage,
|
||||
transform: transform_wl_outputstate,
|
||||
timeline: false,
|
||||
},
|
||||
@@ -184,7 +169,7 @@ const FILE_TYPES = {
|
||||
dataType: DATA_TYPES.TRANSACTION,
|
||||
decoder: protoDecoder,
|
||||
decoderParams: {
|
||||
protoType: TransactionMessage,
|
||||
protoType: SfTransactionTraceMessage,
|
||||
transform: transform_transaction_trace,
|
||||
timeline: true,
|
||||
}
|
||||
@@ -194,7 +179,7 @@ const FILE_TYPES = {
|
||||
dataType: DATA_TYPES.PROTO_LOG,
|
||||
decoder: protoDecoder,
|
||||
decoderParams: {
|
||||
protoType: WindowLogMessage,
|
||||
protoType: ProtoLogMessage,
|
||||
transform: transform_protolog,
|
||||
timeline: true,
|
||||
}
|
||||
@@ -221,6 +206,10 @@ const FILE_TYPES = {
|
||||
},
|
||||
};
|
||||
|
||||
function lookup_type(protoPath, type) {
|
||||
return protobuf.Root.fromJSON(protoPath).lookupType(type);
|
||||
}
|
||||
|
||||
// Replace enum values with string representation and
|
||||
// add default values to the proto objects. This function also handles
|
||||
// a special case with TransformProtos where the matrix may be derived
|
||||
|
||||
@@ -284,6 +284,16 @@ function fill_inherited_state(layerMap, rootLayers) {
|
||||
const parentHidden = parent && parent.hidden;
|
||||
layer.hidden = is_hidden_by_policy(layer) || parentHidden;
|
||||
layer.verboseFlags = flags_to_string(layer.flags);
|
||||
|
||||
if (!layer.bounds) {
|
||||
if (!layer.sourceBounds) {
|
||||
layer.bounds = layer.sourceBounds;
|
||||
} else if (parent) {
|
||||
layer.bounds = parent.bounds;
|
||||
} else {
|
||||
layer.bounds = {left:0, top:0, right:0, bottom:0};
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user