summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/apphibernation/AppHibernationService.java40
-rw-r--r--services/core/java/com/android/server/apphibernation/GlobalLevelState.java8
-rw-r--r--services/core/java/com/android/server/apphibernation/UserLevelState.java8
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
+ + '}';
+ }
}