summaryrefslogtreecommitdiff
path: root/core/java/com
diff options
context:
space:
mode:
authorPatrick Tjin <pattjin@google.com>2016-08-30 05:22:48 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-08-30 05:22:48 +0000
commit56734f96ecbb0cc5012af5aa92e5fc8d1542bf11 (patch)
treef960adea6e07af574c4415b4fe5ab02490a494ac /core/java/com
parentaa09263379e1dd49723fafb6fcf2658b0e5617dd (diff)
parent60c17395a6ec13bf116528206ac9ad01cc89a149 (diff)
BootReceiver: Report correct headers for last messages
am: 60c17395a6 Change-Id: Ib938941dc0cdc066a476964732fc6ce7ee3daac9
Diffstat (limited to 'core/java/com')
-rw-r--r--core/java/com/android/server/BootReceiver.java42
1 files changed, 39 insertions, 3 deletions
diff --git a/core/java/com/android/server/BootReceiver.java b/core/java/com/android/server/BootReceiver.java
index fbc51cdca6c2..5a50fbfd5277 100644
--- a/core/java/com/android/server/BootReceiver.java
+++ b/core/java/com/android/server/BootReceiver.java
@@ -79,6 +79,9 @@ public class BootReceiver extends BroadcastReceiver {
private static final String LOG_FILES_FILE = "log-files.xml";
private static final AtomicFile sFile = new AtomicFile(new File(
Environment.getDataSystemDirectory(), LOG_FILES_FILE));
+ private static final String LAST_HEADER_FILE = "last-header.txt";
+ private static final File lastHeaderFile = new File(
+ Environment.getDataSystemDirectory(), LAST_HEADER_FILE);
@Override
public void onReceive(final Context context, Intent intent) {
@@ -113,9 +116,17 @@ public class BootReceiver extends BroadcastReceiver {
Downloads.removeAllDownloadsByPackage(context, OLD_UPDATER_PACKAGE, OLD_UPDATER_CLASS);
}
- private void logBootEvents(Context ctx) throws IOException {
- final DropBoxManager db = (DropBoxManager) ctx.getSystemService(Context.DROPBOX_SERVICE);
- final String headers = new StringBuilder(512)
+ private String getPreviousBootHeaders() {
+ try {
+ return FileUtils.readTextFile(lastHeaderFile, 0, null);
+ } catch (IOException e) {
+ Slog.e(TAG, "Error reading " + lastHeaderFile, e);
+ return null;
+ }
+ }
+
+ private String getCurrentBootHeaders() throws IOException {
+ return new StringBuilder(512)
.append("Build: ").append(Build.FINGERPRINT).append("\n")
.append("Hardware: ").append(Build.BOARD).append("\n")
.append("Revision: ")
@@ -125,6 +136,31 @@ public class BootReceiver extends BroadcastReceiver {
.append("Kernel: ")
.append(FileUtils.readTextFile(new File("/proc/version"), 1024, "...\n"))
.append("\n").toString();
+ }
+
+
+ private String getBootHeadersToLogAndUpdate() throws IOException {
+ final String oldHeaders = getPreviousBootHeaders();
+ final String newHeaders = getCurrentBootHeaders();
+
+ try {
+ FileUtils.stringToFile(lastHeaderFile, newHeaders);
+ } catch (IOException e) {
+ Slog.e(TAG, "Error writing " + lastHeaderFile, e);
+ }
+
+ if (oldHeaders == null) {
+ // If we failed to read the old headers, use the current headers
+ // but note this in the headers so we know
+ return "isPrevious: false\n" + newHeaders;
+ }
+
+ return "isPrevious: true\n" + oldHeaders;
+ }
+
+ private void logBootEvents(Context ctx) throws IOException {
+ final DropBoxManager db = (DropBoxManager) ctx.getSystemService(Context.DROPBOX_SERVICE);
+ final String headers = getBootHeadersToLogAndUpdate();
final String bootReason = SystemProperties.get("ro.boot.bootreason", null);
String recovery = RecoverySystem.handleAftermath(ctx);