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

Commit ead4b44c authored by Zhen Zhang's avatar Zhen Zhang
Browse files

Log GlobalHibernatedApps atom

Log the pull atom -- GlobalHibernatedApps in AppHibernationService

Bug: 186159449
Test: atest AppHibernationService
Test: statsd_testdrive 10109, pulled data is correct
Change-Id: Iefbdf6206b2615c5486aa6b22c0ef901bf2dcd76
parent 6dbd56f8
Loading
Loading
Loading
Loading
+44 −21
Original line number Diff line number Diff line
@@ -182,12 +182,18 @@ public final class AppHibernationService extends SystemService {
                    NAMESPACE_APP_HIBERNATION,
                    ActivityThread.currentApplication().getMainExecutor(),
                    this::onDeviceConfigChanged);
            getContext().getSystemService(StatsManager.class)
                    .setPullAtomCallback(
            final StatsManager statsManager = getContext().getSystemService(StatsManager.class);
            final StatsPullAtomCallbackImpl pullAtomCallback = new StatsPullAtomCallbackImpl();
            statsManager.setPullAtomCallback(
                    FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS,
                    /* metadata */ null, // use default PullAtomMetadata values
                    mBackgroundExecutor,
                            new StatsPullAtomCallbackImpl());
                    pullAtomCallback);
            statsManager.setPullAtomCallback(
                    FrameworkStatsLog.GLOBAL_HIBERNATED_APPS,
                    /* metadata */ null, // use default PullAtomMetadata values
                    mBackgroundExecutor,
                    pullAtomCallback);
        }
    }

@@ -291,6 +297,7 @@ public final class AppHibernationService extends SystemService {
                        stateSnapshot.packageName,
                        userIdSnapshot,
                        stateSnapshot.hibernated,
                        // TODO(b/187224817): This isn't the expected value right now.
                        stateSnapshot.lastUnhibernatedMs);
            });
            List<UserLevelState> states = new ArrayList<>(mUserStates.get(userId).values());
@@ -938,10 +945,14 @@ public final class AppHibernationService extends SystemService {
    private final class StatsPullAtomCallbackImpl implements StatsPullAtomCallback {
        @Override
        public int onPullAtom(int atomTag, @NonNull List<StatsEvent> data) {
            if (atomTag != FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS) {
                return StatsManager.PULL_SKIP;
            if (!isAppHibernationEnabled()
                    && (atomTag == FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS
                    || atomTag == FrameworkStatsLog.GLOBAL_HIBERNATED_APPS)) {
                return StatsManager.PULL_SUCCESS;
            }
            if (isAppHibernationEnabled()) {

            switch (atomTag) {
                case FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS:
                    List<UserInfo> userInfos = mUserManager.getAliveUsers();
                    final int numUsers = userInfos.size();
                    for (int i = 0; i < numUsers; ++i) {
@@ -955,6 +966,18 @@ public final class AppHibernationService extends SystemService {
                            );
                        }
                    }
                    break;
                case FrameworkStatsLog.GLOBAL_HIBERNATED_APPS:
                    int hibernatedAppCount = 0;
                    synchronized (mLock) {
                        for (GlobalLevelState state : mGlobalHibernationStates.values()) {
                            if (state.hibernated) hibernatedAppCount++;
                        }
                    }
                    data.add(FrameworkStatsLog.buildStatsEvent(atomTag, hibernatedAppCount));
                    break;
                default:
                    return StatsManager.PULL_SKIP;
            }
            return StatsManager.PULL_SUCCESS;
        }