am ce258caa: Merge changes I8f067f14,I54d8255a,Ib15917bf

* commit 'ce258caa4aa5cd1ea66b839ee7231c76fcfbc8d6':
  Settings: crashing when turning ON<>OFF developer option. DO NOT MERGE
  Settings: logd: increase dialog title field size to 59
  Settings: logd: increase summary field size to 30
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 7e094d4..d866e9d 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -909,7 +909,7 @@
         <item>16777216</item>
     </string-array>
 
-    <!-- Summaries for logd limit size selection preference. [CHAR LIMIT=19]-->
+    <!-- Summaries for logd limit size selection preference. [CHAR LIMIT=30]-->
     <string-array name="select_logd_size_summaries" >
         <item>64K per log buffer</item>
         <item>256K per log buffer</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 877715a..45f691f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3177,7 +3177,7 @@
     <string name="wifi_display_certification_summary">Show options for wireless display certification</string>
     <!-- UI debug setting: limit size of Android logger buffers -->
     <string name="select_logd_size_title">Logger buffer sizes</string>
-    <!-- UI debug setting: limit size of Android logger buffers [CHAR LIMIT=34] -->
+    <!-- UI debug setting: limit size of Android logger buffers [CHAR LIMIT=59] -->
     <string name="select_logd_size_dialog_title">Select Logger sizes per log buffer</string>
     <!-- Setting Checkbox title whether to allow mock locations -->
     <string name="allow_mock_location">Allow mock locations</string>
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index a16f8b6..8cda9bb 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -150,6 +150,8 @@
 
     private static final int RESULT_DEBUG_APP = 1000;
 
+    private static String DEFAULT_LOG_RING_BUFFER_SIZE_IN_BYTES = "262144"; // 256K
+
     private IWindowManager mWindowManager;
     private IBackupManager mBackupManager;
     private DevicePolicyManager mDpm;
@@ -993,12 +995,16 @@
     }
 
     private void writeLogdSizeOption(Object newValue) {
-        SystemProperties.set(SELECT_LOGD_SIZE_PROPERTY, newValue.toString());
+        final String size = (newValue != null) ?
+                newValue.toString() : DEFAULT_LOG_RING_BUFFER_SIZE_IN_BYTES;
+        SystemProperties.set(SELECT_LOGD_SIZE_PROPERTY, size);
         pokeSystemProperties();
         try {
-            Process p = Runtime.getRuntime().exec("logcat -b all -G " + newValue.toString());
-            int status = p.waitFor();
+            Process p = Runtime.getRuntime().exec("logcat -b all -G " + size);
+            p.waitFor();
+            Log.i(TAG, "Logcat ring buffer sizes set to: " + size);
         } catch (Exception e) {
+            Log.w(TAG, "Cannot set logcat ring buffer sizes", e);
         }
         updateLogdSizeValues();
     }