diff options
| author | 2021-02-28 17:48:25 +0000 | |
|---|---|---|
| committer | 2021-02-28 17:48:25 +0000 | |
| commit | 0458084833d0ebc08dee5682fd32d9744f569bb0 (patch) | |
| tree | 9f5fb635b9cad4b3d6714bc0eb34f036249b2b00 | |
| parent | e4ca4bbc934406289da36a65bb5abb8cecdd3e1f (diff) | |
| parent | a395f61ed584138b2cab65413ca8fd0b6306d6d6 (diff) | |
Merge "Add basic dumping to AppHibernationService" am: 8596c6e90e am: a395f61ed5
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1597057
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Ia48135ef98c1c849ba7a4473e557b1ad49b82c6f
3 files changed, 56 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/apphibernation/AppHibernationService.java b/services/core/java/com/android/server/apphibernation/AppHibernationService.java index 33bdac270c53..32ae87898085 100644 --- a/services/core/java/com/android/server/apphibernation/AppHibernationService.java +++ b/services/core/java/com/android/server/apphibernation/AppHibernationService.java @@ -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 diff --git a/services/core/java/com/android/server/apphibernation/GlobalLevelState.java b/services/core/java/com/android/server/apphibernation/GlobalLevelState.java index 4f756756c2ab..baa84b7070ff 100644 --- a/services/core/java/com/android/server/apphibernation/GlobalLevelState.java +++ b/services/core/java/com/android/server/apphibernation/GlobalLevelState.java @@ -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 + + '}'; + } } diff --git a/services/core/java/com/android/server/apphibernation/UserLevelState.java b/services/core/java/com/android/server/apphibernation/UserLevelState.java index c66dad87c891..272d3d1122a1 100644 --- a/services/core/java/com/android/server/apphibernation/UserLevelState.java +++ b/services/core/java/com/android/server/apphibernation/UserLevelState.java @@ -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 + + '}'; + } } |