Merge "Save existing temporary traces on reboot"
diff --git a/src/com/android/traceur/PerfettoUtils.java b/src/com/android/traceur/PerfettoUtils.java
index 7a43908..33d9ae7 100644
--- a/src/com/android/traceur/PerfettoUtils.java
+++ b/src/com/android/traceur/PerfettoUtils.java
@@ -82,11 +82,11 @@
             Log.e(TAG, "Attempting to start perfetto trace but trace is already in progress");
             return false;
         } else {
-            // Ensure the temporary trace file is cleared.
-            try {
-                Files.deleteIfExists(Paths.get(TEMP_TRACE_LOCATION));
-            } catch (Exception e) {
-                throw new RuntimeException(e);
+            // If a temporary trace file already exists, save it before beginning a new trace.
+            File recoveredFile = TraceUtils.getOutputFile(
+                    TraceUtils.getRecoveredFilename());
+            if (!traceDump(recoveredFile)) {
+                Log.w(TAG, "Failed to recover in-progress trace.");
             }
         }
 
diff --git a/src/com/android/traceur/TraceUtils.java b/src/com/android/traceur/TraceUtils.java
index b813a1e..e4d744e 100644
--- a/src/com/android/traceur/TraceUtils.java
+++ b/src/com/android/traceur/TraceUtils.java
@@ -97,7 +97,8 @@
     }
 
     public static void clearSavedTraces() {
-        String cmd = "rm -f " + TRACE_DIRECTORY + "trace-*.*trace";
+        String cmd = "rm -f " + TRACE_DIRECTORY + "trace-*.*trace " +
+                TRACE_DIRECTORY + "recovered-trace*.*trace";
 
         Log.v(TAG, "Clearing trace directory: " + cmd);
         try {
@@ -159,6 +160,10 @@
             mTraceEngine.getOutputExtension());
     }
 
+    public static String getRecoveredFilename() {
+        return "recovered-" + getOutputFilename();
+    }
+
     public static File getOutputFile(String filename) {
         return new File(TraceUtils.TRACE_DIRECTORY, filename);
     }