diff options
6 files changed, 54 insertions, 27 deletions
diff --git a/services/core/java/com/android/server/am/AppErrorDialog.java b/services/core/java/com/android/server/am/AppErrorDialog.java index 48222cb075cd..a9e557103966 100644 --- a/services/core/java/com/android/server/am/AppErrorDialog.java +++ b/services/core/java/com/android/server/am/AppErrorDialog.java @@ -18,10 +18,7 @@ package com.android.server.am; import static android.app.ActivityTaskManager.INVALID_TASK_ID; -import android.content.BroadcastReceiver; import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; import android.content.res.Resources; import android.os.Build; import android.os.Bundle; @@ -138,19 +135,6 @@ final class AppErrorDialog extends BaseErrorDialog implements View.OnClickListen findViewById(com.android.internal.R.id.customPanel).setVisibility(View.VISIBLE); } - @Override - public void onStart() { - super.onStart(); - getContext().registerReceiver(mReceiver, - new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); - } - - @Override - protected void onStop() { - super.onStop(); - getContext().unregisterReceiver(mReceiver); - } - private final Handler mHandler = new Handler() { public void handleMessage(Message msg) { setResult(msg.what); @@ -204,15 +188,6 @@ final class AppErrorDialog extends BaseErrorDialog implements View.OnClickListen } } - private final BroadcastReceiver mReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) { - cancel(); - } - } - }; - static class Data { AppErrorResult result; int taskId; diff --git a/services/core/java/com/android/server/am/AppNotRespondingDialog.java b/services/core/java/com/android/server/am/AppNotRespondingDialog.java index 77d2898842c6..b233a2ccc6e3 100644 --- a/services/core/java/com/android/server/am/AppNotRespondingDialog.java +++ b/services/core/java/com/android/server/am/AppNotRespondingDialog.java @@ -181,6 +181,11 @@ final class AppNotRespondingDialog extends BaseErrorDialog implements View.OnCli } }; + @Override + protected void closeDialog() { + mHandler.obtainMessage(FORCE_CLOSE).sendToTarget(); + } + static class Data { final ProcessRecord proc; final ApplicationInfo aInfo; diff --git a/services/core/java/com/android/server/am/AppWaitingForDebuggerDialog.java b/services/core/java/com/android/server/am/AppWaitingForDebuggerDialog.java index 3ce24712b42f..262e79521e8c 100644 --- a/services/core/java/com/android/server/am/AppWaitingForDebuggerDialog.java +++ b/services/core/java/com/android/server/am/AppWaitingForDebuggerDialog.java @@ -61,6 +61,11 @@ final class AppWaitingForDebuggerDialog extends BaseErrorDialog { public void onStop() { } + @Override + protected void closeDialog() { + /* Do nothing */ + } + private final Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { diff --git a/services/core/java/com/android/server/am/BaseErrorDialog.java b/services/core/java/com/android/server/am/BaseErrorDialog.java index aabb5877764e..7b5f2cd78947 100644 --- a/services/core/java/com/android/server/am/BaseErrorDialog.java +++ b/services/core/java/com/android/server/am/BaseErrorDialog.java @@ -16,16 +16,19 @@ package com.android.server.am; -import com.android.internal.R; - import android.app.AlertDialog; +import android.content.BroadcastReceiver; import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; import android.os.Handler; import android.os.Message; import android.view.KeyEvent; import android.view.WindowManager; import android.widget.Button; +import com.android.internal.R; + public class BaseErrorDialog extends AlertDialog { private static final int ENABLE_BUTTONS = 0; private static final int DISABLE_BUTTONS = 1; @@ -44,10 +47,19 @@ public class BaseErrorDialog extends AlertDialog { getWindow().setAttributes(attrs); } + @Override public void onStart() { super.onStart(); mHandler.sendEmptyMessage(DISABLE_BUTTONS); mHandler.sendMessageDelayed(mHandler.obtainMessage(ENABLE_BUTTONS), 1000); + getContext().registerReceiver(mReceiver, + new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); + } + + @Override + protected void onStop() { + super.onStop(); + getContext().unregisterReceiver(mReceiver); } public boolean dispatchKeyEvent(KeyEvent event) { @@ -84,4 +96,24 @@ public class BaseErrorDialog extends AlertDialog { } } }; + + /** + * Called when received ACTION_CLOSE_SYSTEM_DIALOGS. + */ + protected void closeDialog() { + if (mCancelable) { + cancel(); + } else { + dismiss(); + } + } + + private final BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) { + closeDialog(); + } + } + }; } diff --git a/services/core/java/com/android/server/am/StrictModeViolationDialog.java b/services/core/java/com/android/server/am/StrictModeViolationDialog.java index 4cc1fc1b7d09..9dddd658575b 100644 --- a/services/core/java/com/android/server/am/StrictModeViolationDialog.java +++ b/services/core/java/com/android/server/am/StrictModeViolationDialog.java @@ -82,6 +82,11 @@ final class StrictModeViolationDialog extends BaseErrorDialog { DISMISS_TIMEOUT); } + @Override + protected void closeDialog() { + mHandler.obtainMessage(ACTION_OK).sendToTarget(); + } + private final Handler mHandler = new Handler() { public void handleMessage(Message msg) { synchronized (mService.mProcLock) { diff --git a/services/core/java/com/android/server/wm/FactoryErrorDialog.java b/services/core/java/com/android/server/wm/FactoryErrorDialog.java index 88b5475cc3a2..afdf1ee4de7f 100644 --- a/services/core/java/com/android/server/wm/FactoryErrorDialog.java +++ b/services/core/java/com/android/server/wm/FactoryErrorDialog.java @@ -41,6 +41,11 @@ final class FactoryErrorDialog extends BaseErrorDialog { public void onStop() { } + @Override + protected void closeDialog() { + /* Do nothing */ + } + private final Handler mHandler = new Handler() { public void handleMessage(Message msg) { throw new RuntimeException("Rebooting from failed factory test"); |