Merge "Clarify restore dialog, prevent spam"
diff --git a/res/values-sw600dp/strings.xml b/res/values-sw600dp/strings.xml
index 82ba301..cb0d8a4 100644
--- a/res/values-sw600dp/strings.xml
+++ b/res/values-sw600dp/strings.xml
@@ -35,5 +35,5 @@
<!-- Recover tabs after a crash dialog title [CHAR LIMIT=32] -->
<string name="recover_title">Restore tabs?</string>
<!-- Recover tabs after a crash dialog prompt [CHAR LIMIT=none] -->
- <string name="recover_prompt">Would you like to restore your tabs from last time?</string>
+ <string name="recover_prompt">Would you like to restore your browser tabs from last time?</string>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c846965..8df4642 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -994,7 +994,7 @@
<!-- 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 windows from last time?</string>
+ <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] -->
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 911f724..e3ca09a 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -640,8 +640,10 @@
// Save all the tabs
mTabControl.saveState(outState, saveImages);
- // Save time so that we know how old incognito tabs (if any) are.
- outState.putSerializable("lastActiveDate", Calendar.getInstance());
+ if (!outState.isEmpty()) {
+ // Save time so that we know how old incognito tabs (if any) are.
+ outState.putSerializable("lastActiveDate", Calendar.getInstance());
+ }
}
void onResume() {
diff --git a/src/com/android/browser/CrashRecoveryHandler.java b/src/com/android/browser/CrashRecoveryHandler.java
index 7ee9cee..acc2a30 100644
--- a/src/com/android/browser/CrashRecoveryHandler.java
+++ b/src/com/android/browser/CrashRecoveryHandler.java
@@ -103,6 +103,10 @@
@Override
public void run() {
+ if (mState.isEmpty()) {
+ clearState(mContext);
+ return;
+ }
Parcel p = Parcel.obtain();
try {
mState.writeToParcel(p, 0);
@@ -119,8 +123,7 @@
}
- private void clearState() {
- Context context = mController.getActivity();
+ private static void clearState(Context context) {
context.deleteFile(STATE_FILE);
}
@@ -128,6 +131,7 @@
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) {
@@ -137,7 +141,7 @@
.setNegativeButton(R.string.recover_no, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- clearState();
+ clearState(mController.getActivity());
mController.doStart(null, intent);
}
})
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index bb200d8..58a7491 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -37,6 +37,7 @@
import android.security.KeyChain;
import android.security.KeyChainAliasCallback;
import android.speech.RecognizerResultsIntent;
+import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -1776,6 +1777,12 @@
if (mMainView == null) {
return mSavedState != null;
}
+ // If the tab is the homepage or has no URL, don't save it
+ String homepage = BrowserSettings.getInstance().getHomePage();
+ if (TextUtils.equals(homepage, mCurrentState.mUrl)
+ || TextUtils.isEmpty(mCurrentState.mUrl)) {
+ return false;
+ }
mSavedState = new Bundle();
mMainView.saveState(mSavedState);
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 6566ac8..1367ba2 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -288,6 +288,9 @@
*/
void saveState(Bundle outState, boolean saveImages) {
final int numTabs = getTabCount();
+ if (numTabs == 0) {
+ return;
+ }
long[] ids = new long[numTabs];
int i = 0;
for (Tab tab : mTabs) {
@@ -297,13 +300,15 @@
tab.getSavedState(saveImages));
}
}
- outState.putLongArray(POSITIONS, ids);
- Tab current = getCurrentTab();
- long cid = -1;
- if (current != null) {
- cid = current.getId();
+ if (!outState.isEmpty()) {
+ outState.putLongArray(POSITIONS, ids);
+ Tab current = getCurrentTab();
+ long cid = -1;
+ if (current != null) {
+ cid = current.getId();
+ }
+ outState.putLong(CURRENT, cid);
}
- outState.putLong(CURRENT, cid);
}
/**