New development setting for ANRs.

Change-Id: I1fcde9d371bbb6e0eef0da7749a8c8cfb9a2c881
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2302dcb..fa45006 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3395,6 +3395,12 @@
     <!-- UI debug setting: limit number of running background processes [CHAR LIMIT=25] -->
     <string name="app_process_limit_title">Background process limit</string>
 
+    <!-- UI debug setting: show all ANRs? [CHAR LIMIT=25] -->
+    <string name="show_all_anrs">Show all ANRs</string>
+    <!-- UI debug setting: show all ANRs summary [CHAR LIMIT=50] -->
+    <string name="show_all_anrs_summary">Show Application Not Responding dialog
+        for background apps</string>
+
     <!-- Activity title for network data usage summary. [CHAR LIMIT=25] -->
     <string name="data_usage_summary_title">Data usage</string>
     <!-- Title for option to pick visible time range from a list available usage periods. [CHAR LIMIT=25] -->
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index a73e7d1..96f8c3e 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -93,6 +93,11 @@
             android:entries="@array/app_process_limit_entries"
             android:entryValues="@array/app_process_limit_values" />
 
+        <CheckBoxPreference
+            android:key="show_all_anrs"
+            android:title="@string/show_all_anrs"
+            android:summary="@string/show_all_anrs_summary"/>
+
     </PreferenceCategory>
 
 </PreferenceScreen>
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 380af3c..2ca28e9 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -65,6 +65,8 @@
             = "immediately_destroy_activities";
     private static final String APP_PROCESS_LIMIT_KEY = "app_process_limit";
 
+    private static final String SHOW_ALL_ANRS_KEY = "show_all_anrs";
+
     private IWindowManager mWindowManager;
 
     private CheckBoxPreference mEnableAdb;
@@ -81,6 +83,8 @@
     private CheckBoxPreference mImmediatelyDestroyActivities;
     private ListPreference mAppProcessLimit;
 
+    private CheckBoxPreference mShowAllANRs;
+
     // To track whether Yes was clicked in the adb warning dialog
     private boolean mOkClicked;
 
@@ -112,6 +116,9 @@
         mAppProcessLimit = (ListPreference) findPreference(APP_PROCESS_LIMIT_KEY);
         mAppProcessLimit.setOnPreferenceChangeListener(this);
 
+        mShowAllANRs = (CheckBoxPreference) findPreference(
+                SHOW_ALL_ANRS_KEY);
+
         removeHdcpOptionsForProduction();
     }
 
@@ -144,6 +151,7 @@
         updateAnimationScaleOptions();
         updateImmediatelyDestroyActivitiesOptions();
         updateAppProcessLimitOptions();
+        updateShowAllANRsOptions();
     }
 
     private void updateHdcpValues() {
@@ -330,6 +338,17 @@
         }
     }
 
+    private void writeShowAllANRsOptions() {
+        Settings.Secure.putInt(getActivity().getContentResolver(),
+                Settings.Secure.ANR_SHOW_BACKGROUND,
+                mShowAllANRs.isChecked() ? 1 : 0);
+    }
+
+    private void updateShowAllANRsOptions() {
+        mShowAllANRs.setChecked(Settings.Secure.getInt(
+            getActivity().getContentResolver(), Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0);
+    }
+
     @Override
     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
 
@@ -372,6 +391,8 @@
             writeCpuUsageOptions();
         } else if (preference == mImmediatelyDestroyActivities) {
             writeImmediatelyDestroyActivitiesOptions();
+        } else if (preference == mShowAllANRs) {
+            writeShowAllANRsOptions();
         }
 
         return false;