diff options
| author | Patrick Tjin <pattjin@google.com> | 2016-08-30 05:22:48 +0000 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2016-08-30 05:22:48 +0000 |
| commit | 56734f96ecbb0cc5012af5aa92e5fc8d1542bf11 (patch) | |
| tree | f960adea6e07af574c4415b4fe5ab02490a494ac /core/java/com | |
| parent | aa09263379e1dd49723fafb6fcf2658b0e5617dd (diff) | |
| parent | 60c17395a6ec13bf116528206ac9ad01cc89a149 (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.java | 42 |
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); |
