Show correct remaining time

In field reports, sometimes the remaining time gets stuck for many
minutes. This has to be caused by a spurious low reading early on which
cannot be overridded because of old logic.

Solution: allow time to increase but only by large amounts (avoid time
jittering up and down).

Bug: 16973374
Change-Id: I49d23ae8c54ded416cbedf383a3c03b33dc02e1c
diff --git a/cryptfs.c b/cryptfs.c
index bb9b2e2..bd6cf58 100644
--- a/cryptfs.c
+++ b/cryptfs.c
@@ -1995,8 +1995,12 @@
                                    - data->used_blocks_already_done;
         int remaining_time = (int)(elapsed_time * remaining_blocks
                                    / data->used_blocks_already_done);
+
+        // Change time only if not yet set, lower, or a lot higher for
+        // best user experience
         if (data->remaining_time == -1
-            || remaining_time < data->remaining_time) {
+            || remaining_time < data->remaining_time
+            || remaining_time > data->remaining_time + 60) {
             char buf[8];
             snprintf(buf, sizeof(buf), "%d", remaining_time);
             property_set("vold.encrypt_time_remaining", buf);