Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7ce78c23 authored by Varun Shah's avatar Varun Shah
Browse files

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
parent 698590ca
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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
+9 −0
Original line number Diff line number Diff line
@@ -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;
            }
+7 −0
Original line number Diff line number Diff line
@@ -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);
    }