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

Commit e7c003f5 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Handle Activity Resume to Stop case for AppUsage logging" into rvc-qpr-dev am: 1c38963b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12663453

Change-Id: I64541b44d167f241c54c0147b4a5a86feba76ba7
parents 31d2774a 1c38963b
Loading
Loading
Loading
Loading
+27 −12
Original line number Diff line number Diff line
@@ -183,6 +183,7 @@ public class UsageStatsService extends SystemService implements
    private static class ActivityData {
        private final String mTaskRootPackage;
        private final String mTaskRootClass;
        public int lastEvent = Event.NONE;
        private ActivityData(String taskRootPackage, String taskRootClass) {
            mTaskRootPackage = taskRootPackage;
            mTaskRootClass = taskRootClass;
@@ -787,6 +788,7 @@ public class UsageStatsService extends SystemService implements
        switch (event.mEventType) {
            case Event.ACTIVITY_RESUMED:
            case Event.ACTIVITY_PAUSED:
            case Event.ACTIVITY_STOPPED:
                uid = mPackageManagerInternal.getPackageUid(event.mPackage, 0, userId);
                break;
            default:
@@ -819,8 +821,10 @@ public class UsageStatsService extends SystemService implements
                                    .APP_USAGE_EVENT_OCCURRED__EVENT_TYPE__MOVE_TO_FOREGROUND);
                    // check if this activity has already been resumed
                    if (mVisibleActivities.get(event.mInstanceId) != null) break;
                    mVisibleActivities.put(event.mInstanceId,
                            new ActivityData(event.mTaskRootPackage, event.mTaskRootClass));
                    final ActivityData resumedData = new ActivityData(event.mTaskRootPackage,
                            event.mTaskRootClass);
                    resumedData.lastEvent = Event.ACTIVITY_RESUMED;
                    mVisibleActivities.put(event.mInstanceId, resumedData);
                    try {
                        switch(mUsageSource) {
                            case USAGE_SOURCE_CURRENT_ACTIVITY:
@@ -836,16 +840,17 @@ public class UsageStatsService extends SystemService implements
                    }
                    break;
                case Event.ACTIVITY_PAUSED:
                    if (event.mTaskRootPackage == null) {
                        // Task Root info is missing. Repair the event based on previous data
                        final ActivityData prevData = mVisibleActivities.get(event.mInstanceId);
                        if (prevData == null) {
                    final ActivityData pausedData = mVisibleActivities.get(event.mInstanceId);
                    if (pausedData == null) {
                        Slog.w(TAG, "Unexpected activity event reported! (" + event.mPackage
                                + "/" + event.mClass + " event : " + event.mEventType
                                + " instanceId : " + event.mInstanceId + ")");
                    } else {
                            event.mTaskRootPackage = prevData.mTaskRootPackage;
                            event.mTaskRootClass = prevData.mTaskRootClass;
                        pausedData.lastEvent = Event.ACTIVITY_PAUSED;
                        if (event.mTaskRootPackage == null) {
                            // Task Root info is missing. Repair the event based on previous data
                            event.mTaskRootPackage = pausedData.mTaskRootPackage;
                            event.mTaskRootClass = pausedData.mTaskRootClass;
                        }
                    }
                    FrameworkStatsLog.write(
@@ -868,6 +873,16 @@ public class UsageStatsService extends SystemService implements
                        return;
                    }

                    if (prevData.lastEvent != Event.ACTIVITY_PAUSED) {
                        FrameworkStatsLog.write(
                                FrameworkStatsLog.APP_USAGE_EVENT_OCCURRED,
                                uid,
                                event.mPackage,
                                event.mClass,
                                FrameworkStatsLog
                                        .APP_USAGE_EVENT_OCCURRED__EVENT_TYPE__MOVE_TO_BACKGROUND);
                    }

                    ArraySet<String> tokens;
                    synchronized (mUsageReporters) {
                        tokens = mUsageReporters.removeReturnOld(event.mInstanceId);