Merge "Show text changes immediately." into oc-dr1-dev
am: 9af5d9a2d8

Change-Id: I933f19e29b98f1c7ff9e15fc4c3b098262b1f182
diff --git a/src/com/android/emergency/edit/EditMedicalInfoFragment.java b/src/com/android/emergency/edit/EditMedicalInfoFragment.java
index b79163b..0009fa9 100644
--- a/src/com/android/emergency/edit/EditMedicalInfoFragment.java
+++ b/src/com/android/emergency/edit/EditMedicalInfoFragment.java
@@ -40,10 +40,12 @@
         for (int i = 0; i < PreferenceKeys.KEYS_EDIT_EMERGENCY_INFO.length; i++) {
             final int index = i;
             String preferenceKey = PreferenceKeys.KEYS_EDIT_EMERGENCY_INFO[i];
+
             Preference preference = findPreference(preferenceKey);
             preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                 @Override
                 public boolean onPreferenceChange(Preference preference, Object value) {
+                    // Log settings changes.
                     boolean notSet = TextUtils.isEmpty((String) value);
                     // 0 is the default subtype. In DP1 and DP2 we had no explicit subtype.
                     // Start at 30 to differentiate between before and after.
@@ -51,6 +53,12 @@
                             preference.getContext(),
                             MetricsEvent.ACTION_EDIT_EMERGENCY_INFO_FIELD,
                             30 + index * 2 + (notSet ? 0 : 1));
+                    // If the preference implements OnPreferenceChangeListener, notify it of the
+                    // change as well.
+                    if (Preference.OnPreferenceChangeListener.class.isInstance(preference)) {
+                        return ((Preference.OnPreferenceChangeListener) preference)
+                                .onPreferenceChange(preference, value);
+                    }
                     return true;
                 }
             });
diff --git a/src/com/android/emergency/preferences/EmergencyEditTextPreference.java b/src/com/android/emergency/preferences/EmergencyEditTextPreference.java
index fb09eea..efb7adc 100644
--- a/src/com/android/emergency/preferences/EmergencyEditTextPreference.java
+++ b/src/com/android/emergency/preferences/EmergencyEditTextPreference.java
@@ -16,6 +16,7 @@
 package com.android.emergency.preferences;
 
 import android.content.Context;
+import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceViewHolder;
 import android.text.TextUtils;
 import android.util.AttributeSet;
@@ -29,7 +30,7 @@
  * Custom {@link EditTextPreference} that allows us to refresh and update the summary.
  */
 public class EmergencyEditTextPreference extends CustomEditTextPreference
-        implements ReloadablePreferenceInterface {
+        implements Preference.OnPreferenceChangeListener, ReloadablePreferenceInterface {
 
     private static final int MAX_LINES = 50;
 
@@ -62,6 +63,13 @@
     }
 
     @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        String text = (String) newValue;
+        setSummary(text);
+        return true;
+    }
+
+    @Override
     protected void onBindDialogView(View view) {
         super.onBindDialogView(view);
         getEditText().setSelection(getEditText().getText().length());
diff --git a/tests/robolectric/src/com/android/emergency/preferences/EmergencyEditTextPreferenceTest.java b/tests/robolectric/src/com/android/emergency/preferences/EmergencyEditTextPreferenceTest.java
index ca3f0c3..14e7a96 100644
--- a/tests/robolectric/src/com/android/emergency/preferences/EmergencyEditTextPreferenceTest.java
+++ b/tests/robolectric/src/com/android/emergency/preferences/EmergencyEditTextPreferenceTest.java
@@ -86,6 +86,14 @@
     }
 
     @Test
+    public void testOnPreferenceChange() throws Throwable {
+        final String medicalConditions = "Asthma";
+        mPreference.onPreferenceChange(mPreference, medicalConditions);
+
+        assertThat(mPreference.getSummary()).isEqualTo(medicalConditions);
+    }
+
+    @Test
     public void testSetText() throws Throwable {
         final String medicalConditions = "Asthma";
         mPreference.setText(medicalConditions);