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 jsonProtoDefsWm from 'frameworks/base/core/proto/android/server/windowmanagertrace.proto'
|
||||||
import jsonProtoLogDefs from 'frameworks/base/core/proto/android/server/protolog.proto'
|
import jsonProtoDefsProtoLog from 'frameworks/base/core/proto/android/server/protolog.proto'
|
||||||
import jsonProtoDefsSF from 'frameworks/native/services/surfaceflinger/layerproto/layerstrace.proto'
|
import jsonProtoDefsSf from 'frameworks/native/services/surfaceflinger/layerproto/layerstrace.proto'
|
||||||
import jsonProtoDefsTrans from 'frameworks/native/cmds/surfacereplayer/proto/src/trace.proto'
|
import jsonProtoDefsTransaction from 'frameworks/native/cmds/surfacereplayer/proto/src/trace.proto'
|
||||||
import jsonProtoDefsWL from 'WaylandSafePath/waylandtrace.proto'
|
import jsonProtoDefsWl from 'WaylandSafePath/waylandtrace.proto'
|
||||||
import jsonProtoDefsSysUi from 'frameworks/base/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.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 jsonProtoDefsLauncher from 'packages/apps/Launcher3/protos/launcher_trace_file.proto'
|
||||||
import protobuf from 'protobufjs'
|
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 { fill_transform_data } from './matrix_utils.js'
|
||||||
import { mp4Decoder } from './decodeVideo.js'
|
import { mp4Decoder } from './decodeVideo.js'
|
||||||
|
|
||||||
var protoDefs = protobuf.Root.fromJSON(jsonProtoDefs)
|
var WmTraceMessage = lookup_type(jsonProtoDefsWm, "com.android.server.wm.WindowManagerTraceFileProto");
|
||||||
.addJSON(jsonProtoLogDefs.nested)
|
var WmDumpMessage = lookup_type(jsonProtoDefsWm, "com.android.server.wm.WindowManagerServiceDumpProto");
|
||||||
.addJSON(jsonProtoDefsSF.nested)
|
var SfTraceMessage = lookup_type(jsonProtoDefsSf, "android.surfaceflinger.LayersTraceFileProto");
|
||||||
.addJSON(jsonProtoDefsTrans.nested)
|
var SfDumpMessage = lookup_type(jsonProtoDefsSf, "android.surfaceflinger.LayersProto");
|
||||||
.addJSON(jsonProtoDefsWL.nested)
|
var SfTransactionTraceMessage = lookup_type(jsonProtoDefsTransaction, "Trace");
|
||||||
.addJSON(jsonProtoDefsSysUi.nested)
|
var WaylandTraceMessage = lookup_type(jsonProtoDefsWl, "org.chromium.arc.wayland_composer.TraceFileProto");
|
||||||
.addJSON(jsonProtoDefsLauncher.nested);
|
var WaylandDumpMessage = lookup_type(jsonProtoDefsWl, "org.chromium.arc.wayland_composer.OutputStateProto");
|
||||||
|
var ProtoLogMessage = lookup_type(jsonProtoDefsProtoLog, "com.android.server.protolog.ProtoLogFileProto");
|
||||||
var WindowTraceMessage = protoDefs.lookupType(
|
var SystemUiTraceMessage = lookup_type(jsonProtoDefsSysUi, "com.android.systemui.tracing.SystemUiTraceFileProto");
|
||||||
"com.android.server.wm.WindowManagerTraceFileProto");
|
var LauncherTraceMessage = lookup_type(jsonProtoDefsLauncher, "com.android.launcher3.tracing.LauncherTraceFileProto");
|
||||||
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");
|
|
||||||
|
|
||||||
const LAYER_TRACE_MAGIC_NUMBER = [0x09, 0x4c, 0x59, 0x52, 0x54, 0x52, 0x41, 0x43, 0x45] // .LYRTRACE
|
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
|
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,
|
dataType: DATA_TYPES.WINDOW_MANAGER,
|
||||||
decoder: protoDecoder,
|
decoder: protoDecoder,
|
||||||
decoderParams: {
|
decoderParams: {
|
||||||
protoType: WindowTraceMessage,
|
protoType: WmTraceMessage,
|
||||||
transform: transform_window_trace,
|
transform: transform_window_trace,
|
||||||
timeline: true,
|
timeline: true,
|
||||||
},
|
},
|
||||||
@@ -126,7 +111,7 @@ const FILE_TYPES = {
|
|||||||
dataType: DATA_TYPES.SURFACE_FLINGER,
|
dataType: DATA_TYPES.SURFACE_FLINGER,
|
||||||
decoder: protoDecoder,
|
decoder: protoDecoder,
|
||||||
decoderParams: {
|
decoderParams: {
|
||||||
protoType: LayersTraceMessage,
|
protoType: SfTraceMessage,
|
||||||
transform: transform_layers_trace,
|
transform: transform_layers_trace,
|
||||||
timeline: true,
|
timeline: true,
|
||||||
},
|
},
|
||||||
@@ -146,7 +131,7 @@ const FILE_TYPES = {
|
|||||||
dataType: DATA_TYPES.SURFACE_FLINGER,
|
dataType: DATA_TYPES.SURFACE_FLINGER,
|
||||||
decoder: protoDecoder,
|
decoder: protoDecoder,
|
||||||
decoderParams: {
|
decoderParams: {
|
||||||
protoType: LayersMessage,
|
protoType: SfDumpMessage,
|
||||||
transform: (decoded) => transform_layers(true /*includesCompositionState*/, decoded),
|
transform: (decoded) => transform_layers(true /*includesCompositionState*/, decoded),
|
||||||
timeline: false,
|
timeline: false,
|
||||||
},
|
},
|
||||||
@@ -156,7 +141,7 @@ const FILE_TYPES = {
|
|||||||
dataType: DATA_TYPES.WINDOW_MANAGER,
|
dataType: DATA_TYPES.WINDOW_MANAGER,
|
||||||
decoder: protoDecoder,
|
decoder: protoDecoder,
|
||||||
decoderParams: {
|
decoderParams: {
|
||||||
protoType: WindowMessage,
|
protoType: WmDumpMessage,
|
||||||
transform: transform_window_service,
|
transform: transform_window_service,
|
||||||
timeline: false,
|
timeline: false,
|
||||||
},
|
},
|
||||||
@@ -166,7 +151,7 @@ const FILE_TYPES = {
|
|||||||
dataType: DATA_TYPES.WAYLAND,
|
dataType: DATA_TYPES.WAYLAND,
|
||||||
decoder: protoDecoder,
|
decoder: protoDecoder,
|
||||||
decoderParams: {
|
decoderParams: {
|
||||||
protoType: WaylandMessage,
|
protoType: WaylandDumpMessage,
|
||||||
transform: transform_wl_outputstate,
|
transform: transform_wl_outputstate,
|
||||||
timeline: false,
|
timeline: false,
|
||||||
},
|
},
|
||||||
@@ -184,7 +169,7 @@ const FILE_TYPES = {
|
|||||||
dataType: DATA_TYPES.TRANSACTION,
|
dataType: DATA_TYPES.TRANSACTION,
|
||||||
decoder: protoDecoder,
|
decoder: protoDecoder,
|
||||||
decoderParams: {
|
decoderParams: {
|
||||||
protoType: TransactionMessage,
|
protoType: SfTransactionTraceMessage,
|
||||||
transform: transform_transaction_trace,
|
transform: transform_transaction_trace,
|
||||||
timeline: true,
|
timeline: true,
|
||||||
}
|
}
|
||||||
@@ -194,7 +179,7 @@ const FILE_TYPES = {
|
|||||||
dataType: DATA_TYPES.PROTO_LOG,
|
dataType: DATA_TYPES.PROTO_LOG,
|
||||||
decoder: protoDecoder,
|
decoder: protoDecoder,
|
||||||
decoderParams: {
|
decoderParams: {
|
||||||
protoType: WindowLogMessage,
|
protoType: ProtoLogMessage,
|
||||||
transform: transform_protolog,
|
transform: transform_protolog,
|
||||||
timeline: true,
|
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
|
// Replace enum values with string representation and
|
||||||
// add default values to the proto objects. This function also handles
|
// add default values to the proto objects. This function also handles
|
||||||
// a special case with TransformProtos where the matrix may be derived
|
// 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;
|
const parentHidden = parent && parent.hidden;
|
||||||
layer.hidden = is_hidden_by_policy(layer) || parentHidden;
|
layer.hidden = is_hidden_by_policy(layer) || parentHidden;
|
||||||
layer.verboseFlags = flags_to_string(layer.flags);
|
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