Persist Locus Id Event to UsageStatsProto.

Currently, we are only using UsageStatsProto for backup and restore
purposes but to ensure it is in sync with UsageStatsProtoV2, adding the
recently added LOCUS_ID event. This enables us to easily fall back to
the earlier proto version if there are issues with V2. This also allows
us to backup all events data if we decide to do that in the future
before updating the B&R restore logic to use V2.

Bug: 155935953
Test: atest UsageStatsDatabaseTest
Change-Id: I792f20a0b44d13f1ed17c4dbebe5555044afa165
This commit is contained in:
Varun Shah
2020-05-06 20:48:06 -07:00
parent 698590ca10
commit 7ce78c23df
3 changed files with 18 additions and 0 deletions

View File

@@ -93,6 +93,8 @@ message IntervalStatsProto {
optional int32 task_root_package_index = 15;
// task_root_class_index contains the index + 1 of the task root class name in the string pool
optional int32 task_root_class_index = 16;
// locus_id_index contains the index + 1 of the locus id in the string pool
optional int32 locus_id_index = 17;
}
// The following fields contain supplemental data used to build IntervalStats, such as a string

View File

@@ -234,6 +234,10 @@ public class IntervalStats {
event.mTaskRootClass = getCachedStringRef(stringPool.get(
parser.readInt(IntervalStatsProto.Event.TASK_ROOT_CLASS_INDEX) - 1));
break;
case (int) IntervalStatsProto.Event.LOCUS_ID_INDEX:
event.mLocusId = getCachedStringRef(stringPool.get(
parser.readInt(IntervalStatsProto.Event.LOCUS_ID_INDEX) - 1));
break;
case ProtoInputStream.NO_MORE_FIELDS:
// Handle default values for certain events types
switch (event.mEventType) {
@@ -252,6 +256,11 @@ public class IntervalStats {
event.mNotificationChannelId = "";
}
break;
case LOCUS_ID_SET:
if (event.mLocusId == null) {
event.mLocusId = "";
}
break;
}
return event;
}

View File

@@ -481,6 +481,13 @@ final class UsageStatsProto {
}
}
break;
case UsageEvents.Event.LOCUS_ID_SET:
if (event.mLocusId != null) {
final int locusIdIndex = stats.mStringCache.indexOf(event.mLocusId);
if (locusIdIndex >= 0) {
proto.write(IntervalStatsProto.Event.LOCUS_ID_INDEX, locusIdIndex + 1);
}
}
}
proto.end(token);
}