diff options
author | Dianne Hackborn <hackbod@google.com> | 2015-01-08 21:55:28 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-01-08 21:55:28 +0000 |
commit | adf1c93ff77c996be7952f98b9f554befb089543 (patch) | |
tree | 9e613c24fa2a04711c965116cca7b0186a19dee6 | |
parent | 1b4e87398a0f994777f432bef8516dce38bed509 (diff) | |
parent | 3968820fc75e1eac03e54cba45b5a0adc28ee87d (diff) | |
download | frameworks_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...
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; |