Get rid of the recovery dialog

 Bug: 5081732

Change-Id: I6cbe0bdcd02735a21e785655df84896d8b79e8ce
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ee3ce95..8ec35c9 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -988,14 +988,6 @@
          the search engines list (Preferences->Advanced->Set search engine
          [CHAR LIMIT=80] -->
     <string name="instant_search_label">Google with Instant (Labs)</string>
-    <!-- Recover tabs after a crash dialog title [CHAR LIMIT=32] -->
-    <string name="recover_title">Restore windows?</string>
-    <!-- Recover tabs after a crash dialog prompt [CHAR LIMIT=none] -->
-    <string name="recover_prompt">Would you like to restore your browser windows from last time?</string>
-    <!-- Yes, recover windows from last time [CHAR LIMIT=10] -->
-    <string name="recover_yes">Restore</string>
-    <!-- No, don't recover windows from last time [CHAR LIMIT=10] -->
-    <string name="recover_no">No</string>
     <!-- Font size preview label in settings [CHAR LIMIT=30] -->
     <string name="preview">Preview</string>
     <!-- Name for the user's unsynced, local bookmarks [CHAR LIMIT=50] -->
diff --git a/src/com/android/browser/CrashRecoveryHandler.java b/src/com/android/browser/CrashRecoveryHandler.java
index 319ff89..8cb5929 100644
--- a/src/com/android/browser/CrashRecoveryHandler.java
+++ b/src/com/android/browser/CrashRecoveryHandler.java
@@ -16,11 +16,7 @@
 
 package com.android.browser;
 
-import android.app.AlertDialog;
 import android.content.Context;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnCancelListener;
-import android.content.DialogInterface.OnClickListener;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
@@ -49,7 +45,7 @@
      * we will automatically restore. If we then crash again within XX minutes,
      * we will prompt instead of automatically restoring.
      */
-    private static final long PROMPT_INTERVAL = 30 * 60 * 1000; // 30 minutes
+    private static final long PROMPT_INTERVAL = 5 * 60 * 1000; // 5 minutes
 
     private static final int MSG_WRITE_STATE = 1;
     private static final int MSG_CLEAR_STATE = 2;
@@ -63,7 +59,6 @@
     private Handler mBackgroundHandler;
     private boolean mIsPreloading = false;
     private boolean mDidPreload = false;
-    private boolean mShouldPrompt = false;
     private Bundle mRecoveryState = null;
 
     public static CrashRecoveryHandler initialize(Controller controller) {
@@ -111,7 +106,6 @@
                     break;
                 case MSG_PRELOAD_STATE:
                     mRecoveryState = loadCrashState();
-                    mShouldPrompt = shouldPrompt();
                     synchronized (CrashRecoveryHandler.this) {
                         mIsPreloading = false;
                         mDidPreload = true;
@@ -148,56 +142,32 @@
 
     public void clearState() {
         mBackgroundHandler.sendEmptyMessage(MSG_CLEAR_STATE);
+        updateLastRecovered(0);
     }
 
-    public void promptToRecover(final Bundle state, final Intent intent) {
-        new AlertDialog.Builder(mController.getActivity())
-                .setTitle(R.string.recover_title)
-                .setMessage(R.string.recover_prompt)
-                .setIcon(R.mipmap.ic_launcher_browser)
-                .setPositiveButton(R.string.recover_yes, new OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        updateLastRecovered();
-                        mController.doStart(state, intent);
-                    }
-                })
-                .setNegativeButton(R.string.recover_no, new OnClickListener() {
-                    @Override
-                    public void onClick(DialogInterface dialog, int which) {
-                        dialog.cancel();
-                    }
-                })
-                .setOnCancelListener(new OnCancelListener() {
-                    @Override
-                    public void onCancel(DialogInterface dialog) {
-                        clearState();
-                        mController.doStart(null, intent);
-                    }
-                })
-                .show();
-    }
-
-    private boolean shouldPrompt() {
+    private boolean shouldRestore() {
         SharedPreferences prefs = mContext.getSharedPreferences(
                 RECOVERY_PREFERENCES, Context.MODE_PRIVATE);
         long lastRecovered = prefs.getLong(KEY_LAST_RECOVERED, 0);
         long timeSinceLastRecover = System.currentTimeMillis() - lastRecovered;
         if (timeSinceLastRecover > PROMPT_INTERVAL) {
-            return false;
+            return true;
         }
-        return true;
+        return false;
     }
 
-    private void updateLastRecovered() {
+    private void updateLastRecovered(long time) {
         SharedPreferences prefs = mContext.getSharedPreferences(
                 RECOVERY_PREFERENCES, Context.MODE_PRIVATE);
         prefs.edit()
-            .putLong(KEY_LAST_RECOVERED, System.currentTimeMillis())
+            .putLong(KEY_LAST_RECOVERED, time)
             .apply();
     }
 
     private Bundle loadCrashState() {
+        if (!shouldRestore()) {
+            return null;
+        }
         Bundle state = null;
         Parcel parcel = Parcel.obtain();
         FileInputStream fin = null;
@@ -228,7 +198,10 @@
                 } catch (IOException e) { }
             }
         }
-        return state;
+        if (state != null && !state.isEmpty()) {
+            return state;
+        }
+        return null;
     }
 
     public void startRecovery(Intent intent) {
@@ -241,16 +214,9 @@
         }
         if (!mDidPreload) {
             mRecoveryState = loadCrashState();
-            mShouldPrompt = shouldPrompt();
         }
-        if (mRecoveryState != null && !mRecoveryState.isEmpty()) {
-            if (mShouldPrompt) {
-                promptToRecover(mRecoveryState, intent);
-                return;
-            } else {
-                updateLastRecovered();
-            }
-        }
+        updateLastRecovered(mRecoveryState != null
+                ? System.currentTimeMillis() : 0);
         mController.doStart(mRecoveryState, intent);
         mRecoveryState = null;
     }