logd: settings: ro.config.low_ram support

- limit settings to 64K, 256K and 1M if ro.config.low_ram true
- Correctly handle ro.logd.size

Bug: 17526187
Change-Id: I2380b649516b29c2a98f54de18e5a4780b3421ce
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index c7c0020..0a09a9c 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -894,6 +894,13 @@
         <item>16M</item>
     </string-array>
 
+    <!-- Titles for logd limit size lowram selection preference. [CHAR LIMIT=14] -->
+    <string-array name="select_logd_size_lowram_titles">
+        <item>64K</item>
+        <item>256K</item>
+        <item>1M</item>
+    </string-array>
+
     <!-- Values for logd limit size selection preference. -->
     <string-array name="select_logd_size_values" translatable="false" >
         <item>65536</item>
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index d801ae0..8bc4b64 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -1107,9 +1107,13 @@
             }
             String[] values = getResources().getStringArray(R.array.select_logd_size_values);
             String[] titles = getResources().getStringArray(R.array.select_logd_size_titles);
+            if (SystemProperties.get("ro.config.low_ram").equals("true")) {
+                mLogdSize.setEntries(R.array.select_logd_size_lowram_titles);
+                titles = getResources().getStringArray(R.array.select_logd_size_lowram_titles);
+            }
             String[] summaries = getResources().getStringArray(R.array.select_logd_size_summaries);
             int index = 1; // punt to second entry if not found
-            for (int i = 0; i < values.length; i++) {
+            for (int i = 0; i < titles.length; i++) {
                 if (currentValue.equals(values[i])
                         || currentValue.equals(titles[i])) {
                     index = i;
@@ -1123,6 +1127,10 @@
     }
 
     private void writeLogdSizeOption(Object newValue) {
+        String currentValue = SystemProperties.get(SELECT_LOGD_DEFAULT_SIZE_PROPERTY);
+        if (currentValue != null) {
+            DEFAULT_LOG_RING_BUFFER_SIZE_IN_BYTES = currentValue;
+        }
         final String size = (newValue != null) ?
                 newValue.toString() : DEFAULT_LOG_RING_BUFFER_SIZE_IN_BYTES;
         SystemProperties.set(SELECT_LOGD_SIZE_PROPERTY, size);