summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/am/BatteryStatsService.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2013-06-11 14:26:53 -0700
committerDianne Hackborn <hackbod@google.com>2013-06-11 14:26:53 -0700
commitcbfd23ee6f14445c3e17c5169abbc80c216fa137 (patch)
tree9e5063fe418c4df345b371a0678faa4a1fcb0c48 /services/java/com/android/server/am/BatteryStatsService.java
parentbe4e6aaa0252dd7da28b7aa85beba982538efa46 (diff)
Add new API to retrieve a dumpsys of a single package.
Adds a platform API, and pm command. Fixes some issues with dumping per-package data in package manager, makes battery stats able to dump per-package state. Change-Id: I76ee6d059f0ba17f7a7061886792b1b716d46d2d
Diffstat (limited to 'services/java/com/android/server/am/BatteryStatsService.java')
-rw-r--r--services/java/com/android/server/am/BatteryStatsService.java20
1 files changed, 17 insertions, 3 deletions
diff --git a/services/java/com/android/server/am/BatteryStatsService.java b/services/java/com/android/server/am/BatteryStatsService.java
index 5a15f0bb8846..f143feb83363 100644
--- a/services/java/com/android/server/am/BatteryStatsService.java
+++ b/services/java/com/android/server/am/BatteryStatsService.java
@@ -27,6 +27,7 @@ import android.os.IBinder;
import android.os.Parcel;
import android.os.Process;
import android.os.ServiceManager;
+import android.os.UserHandle;
import android.os.WorkSource;
import android.telephony.SignalStrength;
import android.telephony.TelephonyManager;
@@ -479,12 +480,13 @@ public final class BatteryStatsService extends IBatteryStats.Stub {
private void dumpHelp(PrintWriter pw) {
pw.println("Battery stats (batteryinfo) dump options:");
- pw.println(" [--checkin] [--unplugged] [--reset] [--write] [-h]");
+ pw.println(" [--checkin] [--unplugged] [--reset] [--write] [-h] [<package.name>]");
pw.println(" --checkin: format output for a checkin report.");
pw.println(" --unplugged: only output data since last unplugged.");
pw.println(" --reset: reset the stats, clearing all current data.");
pw.println(" --write: force write current collected stats to disk.");
pw.println(" -h: print this help text.");
+ pw.println(" <package.name>: optional name of package to filter output by.");
}
@Override
@@ -500,6 +502,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub {
boolean isCheckin = false;
boolean isUnpluggedOnly = false;
boolean noOutput = false;
+ int reqUid = -1;
if (args != null) {
for (String arg : args) {
if ("--checkin".equals(arg)) {
@@ -523,9 +526,20 @@ public final class BatteryStatsService extends IBatteryStats.Stub {
return;
} else if ("-a".equals(arg)) {
// fall through
- } else {
+ } else if (arg.length() > 0 && arg.charAt(0) == '-'){
pw.println("Unknown option: " + arg);
dumpHelp(pw);
+ return;
+ } else {
+ // Not an option, last argument must be a package name.
+ try {
+ reqUid = mContext.getPackageManager().getPackageUid(arg,
+ UserHandle.getCallingUserId());
+ } catch (PackageManager.NameNotFoundException e) {
+ pw.println("Unknown package: " + arg);
+ dumpHelp(pw);
+ return;
+ }
}
}
}
@@ -539,7 +553,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub {
}
} else {
synchronized (mStats) {
- mStats.dumpLocked(pw, isUnpluggedOnly);
+ mStats.dumpLocked(pw, isUnpluggedOnly, reqUid);
}
}
}