Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 67e82c3d authored by Jing Ji's avatar Jing Ji Committed by Automerger Merge Worker
Browse files

Merge "Record tombstone proto file's timestamp into the dropbox" am:...

Merge "Record tombstone proto file's timestamp into the dropbox" am: cbcb665d am: 48a54513 am: 00174571 am: d4dbae12

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1970680

Change-Id: Ida8fa532182f7e63b0cac5be24843437a3ab4600
parents 8bfea6f8 d4dbae12
Loading
Loading
Loading
Loading
+18 −9
Original line number Diff line number Diff line
@@ -484,7 +484,9 @@ public class BootReceiver extends BroadcastReceiver {
        HashMap<String, Long> timestamps = readTimestamps();
        try {
            if (proto) {
                if (recordFileTimestamp(tombstone, timestamps)) {
                    db.addFile(TAG_TOMBSTONE_PROTO, tombstone, 0);
                }
            } else {
                final String headers = getBootHeadersToLogAndUpdate();
                addFileToDropBox(db, timestamps, headers, tombstone.getPath(), LOG_SIZE,
@@ -526,16 +528,10 @@ public class BootReceiver extends BroadcastReceiver {
        if (db == null || !db.isTagEnabled(tag)) return;  // Logging disabled

        File file = new File(filename);
        long fileTime = file.lastModified();
        if (fileTime <= 0) return;  // File does not exist

        if (timestamps.containsKey(filename) && timestamps.get(filename) == fileTime) {
            return;  // Already logged this particular file
        if (!recordFileTimestamp(file, timestamps)) {
            return;
        }

        timestamps.put(filename, fileTime);


        String fileContents = FileUtils.readTextFile(file, maxSize, TAG_TRUNCATED);
        String text = headers + fileContents + footers;
        // Create an additional report for system server native crashes, with a special tag.
@@ -548,6 +544,19 @@ public class BootReceiver extends BroadcastReceiver {
        addTextToDropBox(db, tag, text, filename, maxSize);
    }

    private static boolean recordFileTimestamp(File file, HashMap<String, Long> timestamps) {
        final long fileTime = file.lastModified();
        if (fileTime <= 0) return false;  // File does not exist

        final String filename = file.getPath();
        if (timestamps.containsKey(filename) && timestamps.get(filename) == fileTime) {
            return false;  // Already logged this particular file
        }

        timestamps.put(filename, fileTime);
        return true;
    }

    private static void addTextToDropBox(DropBoxManager db, String tag, String text,
            String filename, int maxSize) {
        Slog.i(TAG, "Copying " + filename + " to DropBox (" + tag + ")");