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

Commit 80bd76c7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Handle STOPPED to PAUSED Usage events" into sc-dev

parents 8e29f94a 289f1679
Loading
Loading
Loading
Loading
+39 −28
Original line number Diff line number Diff line
@@ -943,16 +943,7 @@ 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;
                    final String usageSourcePackage;
                    switch(mUsageSource) {
                        case USAGE_SOURCE_CURRENT_ACTIVITY:
                            usageSourcePackage = event.mPackage;
                            break;
                        case USAGE_SOURCE_TASK_ROOT_ACTIVITY:
                        default:
                            usageSourcePackage = event.mTaskRootPackage;
                            break;
                    }
                    final String usageSourcePackage = getUsageSourcePackage(event);
                    try {
                        mAppTimeLimit.noteUsageStart(usageSourcePackage, userId);
                    } catch (IllegalArgumentException iae) {
@@ -964,19 +955,19 @@ public class UsageStatsService extends SystemService implements
                    mVisibleActivities.put(event.mInstanceId, resumedData);
                    break;
                case Event.ACTIVITY_PAUSED:
                    final ActivityData pausedData = mVisibleActivities.get(event.mInstanceId);
                    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 {
                        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;
                        }
                        // Must have transitioned from Stopped/Destroyed to Paused state.
                        final String usageSourcePackage2 = getUsageSourcePackage(event);
                        try {
                            mAppTimeLimit.noteUsageStart(usageSourcePackage2, userId);
                        } catch (IllegalArgumentException iae) {
                            Slog.e(TAG, "Failed to note usage start", iae);
                        }
                        pausedData = new ActivityData(event.mTaskRootPackage, event.mTaskRootClass,
                                usageSourcePackage2);
                        mVisibleActivities.put(event.mInstanceId, pausedData);
                    } else {
                        FrameworkStatsLog.write(
                                FrameworkStatsLog.APP_USAGE_EVENT_OCCURRED,
                                uid,
@@ -984,6 +975,14 @@ public class UsageStatsService extends SystemService implements
                                event.mClass,
                                FrameworkStatsLog
                                        .APP_USAGE_EVENT_OCCURRED__EVENT_TYPE__MOVE_TO_BACKGROUND);
                    }

                    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;
                    }
                    break;
                case Event.ACTIVITY_DESTROYED:
                    // Treat activity destroys like activity stops.
@@ -993,7 +992,9 @@ public class UsageStatsService extends SystemService implements
                    final ActivityData prevData =
                            mVisibleActivities.removeReturnOld(event.mInstanceId);
                    if (prevData == null) {
                        // The activity stop was already handled.
                        Slog.w(TAG, "Unexpected activity event reported! (" + event.mPackage
                                + "/" + event.mClass + " event : " + event.mEventType
                                + " instanceId : " + event.mInstanceId + ")");
                        return;
                    }

@@ -1059,6 +1060,16 @@ public class UsageStatsService extends SystemService implements
        }
    }

    private String getUsageSourcePackage(Event event) {
        switch(mUsageSource) {
            case USAGE_SOURCE_CURRENT_ACTIVITY:
                return event.mPackage;
            case USAGE_SOURCE_TASK_ROOT_ACTIVITY:
            default:
                return event.mTaskRootPackage;
        }
    }

    /**
     * Some events like FLUSH_TO_DISK need to be sent to all userId.
     * @param event