summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2015-01-08 21:55:28 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-01-08 21:55:28 +0000
commitadf1c93ff77c996be7952f98b9f554befb089543 (patch)
tree9e613c24fa2a04711c965116cca7b0186a19dee6
parent1b4e87398a0f994777f432bef8516dce38bed509 (diff)
parent3968820fc75e1eac03e54cba45b5a0adc28ee87d (diff)
downloadframeworks_base-adf1c93ff77c996be7952f98b9f554befb089543.zip
frameworks_base-adf1c93ff77c996be7952f98b9f554befb089543.tar.gz
frameworks_base-adf1c93ff77c996be7952f98b9f554befb089543.tar.bz2
am 3968820f: am cb8d8e10: Merge "Fix issue #18827122: system server crashed on broadcasting..." into lmp-mr1-dev automerge: 16e4324
* commit '3968820fc75e1eac03e54cba45b5a0adc28ee87d': Fix issue #18827122: system server crashed on broadcasting...
-rw-r--r--core/java/android/os/BatteryStats.java9
-rw-r--r--core/java/com/android/internal/content/PackageMonitor.java5
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java12
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java3
-rw-r--r--services/core/java/com/android/server/pm/UserManagerService.java3
5 files changed, 29 insertions, 3 deletions
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index 5fd697a..c0dca0e 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -604,6 +604,7 @@ public abstract class BatteryStats implements Parcelable {
public static final byte CMD_CURRENT_TIME = 5;
public static final byte CMD_OVERFLOW = 6;
public static final byte CMD_RESET = 7;
+ public static final byte CMD_SHUTDOWN = 8;
public byte cmd = CMD_NULL;
@@ -3529,6 +3530,11 @@ public abstract class BatteryStats implements Parcelable {
pw.println(DateFormat.format("yyyy-MM-dd-HH-mm-ss",
rec.currentTime).toString());
}
+ } else if (rec.cmd == HistoryItem.CMD_SHUTDOWN) {
+ if (checkin) {
+ pw.print(":");
+ }
+ pw.println("SHUTDOWN");
} else if (rec.cmd == HistoryItem.CMD_OVERFLOW) {
if (checkin) {
pw.print(":");
@@ -3849,7 +3855,8 @@ public abstract class BatteryStats implements Parcelable {
if (histStart >= 0 && !printed) {
if (rec.cmd == HistoryItem.CMD_CURRENT_TIME
|| rec.cmd == HistoryItem.CMD_RESET
- || rec.cmd == HistoryItem.CMD_START) {
+ || rec.cmd == HistoryItem.CMD_START
+ || rec.cmd == HistoryItem.CMD_SHUTDOWN) {
printed = true;
hprinter.printNextItem(pw, rec, baseTime, checkin,
(flags&DUMP_VERBOSE) != 0);
diff --git a/core/java/com/android/internal/content/PackageMonitor.java b/core/java/com/android/internal/content/PackageMonitor.java
index 9df8ad5..eff44bd 100644
--- a/core/java/com/android/internal/content/PackageMonitor.java
+++ b/core/java/com/android/internal/content/PackageMonitor.java
@@ -24,6 +24,7 @@ import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
+import android.util.Slog;
import com.android.internal.os.BackgroundThread;
import java.util.HashSet;
@@ -279,8 +280,8 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
mChangeUserId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE,
UserHandle.USER_NULL);
if (mChangeUserId == UserHandle.USER_NULL) {
- throw new IllegalArgumentException(
- "Intent broadcast does not contain user handle: " + intent);
+ Slog.w("PackageMonitor", "Intent broadcast does not contain user handle: " + intent);
+ return;
}
onBeginPackageChanges();
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 8ceee20..20bb95e 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -6955,6 +6955,17 @@ public final class BatteryStatsImpl extends BatteryStats {
}
}
+ private void recordShutdownLocked(final long elapsedRealtimeMs, final long uptimeMs) {
+ if (mRecordingHistory) {
+ mHistoryCur.currentTime = System.currentTimeMillis();
+ mLastRecordedClockTime = mHistoryCur.currentTime;
+ mLastRecordedClockRealtime = elapsedRealtimeMs;
+ addHistoryBufferLocked(elapsedRealtimeMs, uptimeMs, HistoryItem.CMD_SHUTDOWN,
+ mHistoryCur);
+ mHistoryCur.currentTime = 0;
+ }
+ }
+
// This should probably be exposed in the API, though it's not critical
private static final int BATTERY_PLUGGED_NONE = 0;
@@ -7627,6 +7638,7 @@ public final class BatteryStatsImpl extends BatteryStats {
}
public void shutdownLocked() {
+ recordShutdownLocked(SystemClock.elapsedRealtime(), SystemClock.uptimeMillis());
writeSyncLocked();
mShuttingDown = true;
}
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 9607755..02cacd9 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -683,6 +683,9 @@ public class NotificationManagerService extends SystemService {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
+ if (action == null) {
+ return;
+ }
boolean queryRestart = false;
boolean queryRemove = false;
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index ff149ee..f85b195 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -320,6 +320,9 @@ public class UserManagerService extends IUserManager.Stub {
checkManageUsersPermission("get the profile parent");
synchronized (mPackagesLock) {
UserInfo profile = getUserInfoLocked(userHandle);
+ if (profile == null) {
+ return null;
+ }
int parentUserId = profile.profileGroupId;
if (parentUserId == UserInfo.NO_PROFILE_GROUP_ID) {
return null;