Browser: add to support exit prompt feature
Add for carrier feature.When user click exit menu or press back key
to exit browser,it will show a dialog to let user choose quit or
minimize browser.
CRs-Fixed: 507959
Change-Id: Ic4c2bcf94b0054e24591ebbc87c7a1a786d14995
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index fe472c5..b35ca04 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -246,23 +246,6 @@
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (!mController.onOptionsItemSelected(item)) {
- if (item.getItemId() == R.id.exit_menu_id) {
- finish();
- new Handler().postDelayed(new Runnable() {
- @Override
- public void run() {
- // Make sure all tabs are closed.
- if (mController != NullController.INSTANCE) {
- mController.onPause();
- mController.onDestroy();
- // Clear the state before kill the browser process.
- CrashRecoveryHandler.getInstance().clearState(true);
- mController = NullController.INSTANCE;
- }
- android.os.Process.killProcess(android.os.Process.myPid());
- }
- }, 300);
- }
if (item.getItemId() == R.id.about_menu_id) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.about);
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index e84358f..8e118a1 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -17,6 +17,7 @@
package com.android.browser;
import android.app.Activity;
+import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DownloadManager;
import android.app.ProgressDialog;
@@ -1652,8 +1653,8 @@
String ret = SystemProperties.get("persist.debug.browsermonkeytest");
if (ret != null && ret.equals("enable"))
break;
- onPause();
- return false;
+ showExitDialog(mActivity);
+ return true;
case R.id.homepage_menu_id:
Tab current = mTabControl.getCurrentTab();
@@ -1835,6 +1836,35 @@
t.loadUrl(t.getUrl(), null);
}
+ private void showExitDialog(final Activity activity) {
+ new AlertDialog.Builder(activity)
+ .setTitle(R.string.exit_browser_title)
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setMessage(R.string.exit_browser_msg)
+ .setNegativeButton(R.string.exit_minimize, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ activity.moveTaskToBack(true);
+ dialog.dismiss();
+ }
+ })
+ .setPositiveButton(R.string.exit_quit, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ activity.finish();
+ mHandler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ // TODO Auto-generated method stub
+ mCrashRecoveryHandler.clearState(true);
+ int pid = android.os.Process.myPid();
+ android.os.Process.killProcess(pid);
+ }
+ }, 300);
+ dialog.dismiss();
+ }
+ })
+ .show();
+ }
+
@Override
public void showPageInfo() {
mPageDialogsHandler.showPageInfo(mTabControl.getCurrentTab(), false, null);
@@ -2638,7 +2668,7 @@
* root of the task. So we can use either true or false for
* moveTaskToBack().
*/
- mActivity.moveTaskToBack(true);
+ showExitDialog(mActivity);
return;
}
if (current.canGoBack()) {
@@ -2652,9 +2682,6 @@
// Now we close the other tab
closeTab(current);
} else {
- if ((current.getAppId() != null) || current.closeOnBack()) {
- closeCurrentTab(true);
- }
/*
* Instead of finishing the activity, simply push this to the back
* of the stack and let ActivityManager to choose the foreground
@@ -2662,7 +2689,7 @@
* root of the task. So we can use either true or false for
* moveTaskToBack().
*/
- mActivity.moveTaskToBack(true);
+ showExitDialog(mActivity);
}
}
}