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

Commit a395f61e authored by Rajeev Kumar's avatar Rajeev Kumar Committed by Automerger Merge Worker
Browse files

Merge "Add basic dumping to AppHibernationService" am: 8596c6e9

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I603e07b689562215c80fee47d68f9220f7da7396
parents 8ae5fd7f 8596c6e9
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -57,10 +57,13 @@ import android.util.SparseArray;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.SystemService;

import java.io.File;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -511,6 +514,37 @@ public final class AppHibernationService extends SystemService {
        return mIsServiceEnabled;
    }

    private void dump(PrintWriter pw) {
        // Check usage stats permission since hibernation indirectly informs usage.
        if (!DumpUtils.checkDumpAndUsageStatsPermission(getContext(), TAG, pw)) return;

        IndentingPrintWriter idpw = new IndentingPrintWriter(pw, "  ");

        synchronized (mLock) {
            final int userCount = mUserStates.size();
            for (int i = 0; i < userCount; i++) {
                final int userId = mUserStates.keyAt(i);
                idpw.print("User Level Hibernation States, ");
                idpw.printPair("user", userId);
                idpw.println();
                Map<String, UserLevelState> stateMap = mUserStates.get(i);
                idpw.increaseIndent();
                for (UserLevelState state : stateMap.values()) {
                    idpw.print(state);
                    idpw.println();
                }
                idpw.decreaseIndent();
            }
            idpw.println();
            idpw.print("Global Level Hibernation States");
            idpw.println();
            for (GlobalLevelState state : mGlobalHibernationStates.values()) {
                idpw.print(state);
                idpw.println();
            }
        }
    }

    private final AppHibernationServiceStub mServiceStub = new AppHibernationServiceStub(this);

    static final class AppHibernationServiceStub extends IAppHibernationService.Stub {
@@ -547,6 +581,12 @@ public final class AppHibernationService extends SystemService {
            new AppHibernationShellCommand(mService).exec(this, in, out, err, args, callback,
                    resultReceiver);
        }

        @Override
        protected void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter fout,
                @Nullable String[] args) {
            mService.dump(fout);
        }
    }

    // Broadcast receiver for package add/removal events
+8 −0
Original line number Diff line number Diff line
@@ -22,4 +22,12 @@ package com.android.server.apphibernation;
final class GlobalLevelState {
    public String packageName;
    public boolean hibernated;

    @Override
    public String toString() {
        return "GlobalLevelState{"
                + "packageName='" + packageName + '\''
                + ", hibernated=" + hibernated
                + '}';
    }
}
+8 −0
Original line number Diff line number Diff line
@@ -22,4 +22,12 @@ package com.android.server.apphibernation;
final class UserLevelState {
    public String packageName;
    public boolean hibernated;

    @Override
    public String toString() {
        return "UserLevelState{"
                + "packageName='" + packageName + '\''
                + ", hibernated=" + hibernated
                + '}';
    }
}