Merge "Make "Battery usage" accessible at any time" into oc-dev
diff --git a/res/xml/battery_saver_settings.xml b/res/xml/battery_saver_settings.xml
index 1720c73..52f6793 100644
--- a/res/xml/battery_saver_settings.xml
+++ b/res/xml/battery_saver_settings.xml
@@ -22,6 +22,6 @@
     <DropDownPreference
             android:key="turn_on_automatically"
             android:title="@string/battery_saver_turn_on_automatically_title"
-            android:summary="%s" />
+            android:summary="@string/summary_placeholder" />
 
 </PreferenceScreen>
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
index d288a9d..33c1b0a 100644
--- a/res/xml/sound_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -124,7 +124,7 @@
         <DropDownPreference
           android:key="dock_audio_media"
           android:title="@string/dock_audio_media_title"
-          android:summary="%s" />
+          android:summary="@string/summary_placeholder" />
 
         <!-- Boot sounds -->
         <SwitchPreference
@@ -135,7 +135,7 @@
         <DropDownPreference
           android:key="emergency_tone"
           android:title="@string/emergency_tone_title"
-          android:summary="%s" />
+          android:summary="@string/summary_placeholder" />
 
         <com.android.settingslib.RestrictedPreference
           android:key="cell_broadcast_settings"
diff --git a/src/com/android/settings/fuelgauge/BatterySaverSettings.java b/src/com/android/settings/fuelgauge/BatterySaverSettings.java
index 6b7ddf9..45d0db2 100644
--- a/src/com/android/settings/fuelgauge/BatterySaverSettings.java
+++ b/src/com/android/settings/fuelgauge/BatterySaverSettings.java
@@ -99,7 +99,6 @@
             }
         };
         mTriggerPref.init(this);
-
         mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
     }
 
diff --git a/src/com/android/settings/notification/SettingPref.java b/src/com/android/settings/notification/SettingPref.java
index 18efc33..cdbd5b3 100644
--- a/src/com/android/settings/notification/SettingPref.java
+++ b/src/com/android/settings/notification/SettingPref.java
@@ -121,6 +121,19 @@
         if (mTwoState != null) {
             mTwoState.setChecked(val != 0);
         } else if (mDropDown != null) {
+            if (mValues != null) {
+                int index = 0;
+                for (int len = mValues.length; index < len; index++) {
+                    if (mValues[index] == val) {
+                        break;
+                    }
+                }
+
+                if (index < mValues.length) {
+                    CharSequence entry = mDropDown.getEntries()[index];
+                    mDropDown.setSummary(entry);
+                }
+            }
             mDropDown.setValue(Integer.toString(val));
         }
     }
diff --git a/tests/robotests/src/com/android/settings/notification/SettingPrefTest.java b/tests/robotests/src/com/android/settings/notification/SettingPrefTest.java
new file mode 100644
index 0000000..39f1377
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/SettingPrefTest.java
@@ -0,0 +1,67 @@
+package com.android.settings.notification;
+
+import android.content.res.Resources;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.support.v7.preference.DropDownPreference;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.spy;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class SettingPrefTest {
+
+    @Test
+    public void update_setsDropDownSummaryText() {
+        Context context = RuntimeEnvironment.application;
+        String testSetting = "test_setting";
+        int[] values = new int[] {1,2,3};
+        String[] entries = new String[] {"one", "two", "three"};
+        SettingPref settingPref =
+                spy(new SettingPref(SettingPref.TYPE_GLOBAL, "key", testSetting, 0, values) {
+                    @Override
+                    protected String getCaption(Resources res, int value) {
+                        return "temp";
+                    }
+                });
+        DropDownPreference dropdownPref = spy(new DropDownPreference(context));
+        dropdownPref.setEntries(entries);
+        settingPref.mDropDown = dropdownPref;
+        Settings.Global.putInt(context.getContentResolver(), testSetting, values[2]);
+
+        settingPref.update(context);
+
+        assertThat(settingPref.mDropDown.getSummary()).isEqualTo(entries[2]);
+    }
+
+    @Test
+    public void update_setsDropDownSummaryText_noMatch_noError() {
+        Context context = RuntimeEnvironment.application;
+        String testSetting = "test_setting";
+        int[] values = new int[] {1,2,3};
+        String[] entries = new String[] {"one", "two", "three"};
+        SettingPref settingPref =
+                spy(new SettingPref(SettingPref.TYPE_GLOBAL, "key", testSetting, 0, values) {
+                    @Override
+                    protected String getCaption(Resources res, int value) {
+                        return "temp";
+                    }
+                });
+        DropDownPreference dropdownPref = spy(new DropDownPreference(context));
+        dropdownPref.setEntries(entries);
+        settingPref.mDropDown = dropdownPref;
+        Settings.Global.putInt(context.getContentResolver(), testSetting, -1);
+
+        settingPref.update(context);
+
+        assertThat(settingPref.mDropDown.getSummary()).isNull();
+    }
+}