OSDN Git Service

Auto set summary on preference during updateState
authorFan Zhang <zhfan@google.com>
Wed, 28 Feb 2018 01:13:20 +0000 (17:13 -0800)
committerFan Zhang <zhfan@google.com>
Wed, 28 Feb 2018 21:42:11 +0000 (13:42 -0800)
Change-Id: Ibc24f3f041841d9fe7d53674a672bc2bacad895b
Fixes: 73950519
Test: robotests

packages/SettingsLib/src/com/android/settingslib/core/AbstractPreferenceController.java
packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/AbstractPreferenceControllerTest.java

index 566e037..660521e 100644 (file)
@@ -37,7 +37,16 @@ public abstract class AbstractPreferenceController {
      * Updates the current status of preference (summary, switch state, etc)
      */
     public void updateState(Preference preference) {
-
+        if (preference == null) {
+            return;
+        }
+        final CharSequence summary = getSummary();
+        if (summary == null) {
+            // Default getSummary returns null. If subclass didn't override this, there is nothing
+            // we need to do.
+            return;
+        }
+        preference.setSummary(summary);
     }
 
     /**
index 8767923..393fd02 100644 (file)
@@ -82,8 +82,17 @@ public class AbstractPreferenceControllerTest {
         assertThat(mPreference.isVisible()).isFalse();
     }
 
-    private class TestPrefController extends AbstractPreferenceController {
+    @Test
+    public void updateState_hasSummary_shouldSetSummary() {
+        mTestPrefController.updateState(mPreference);
+
+        assertThat(mPreference.getSummary()).isEqualTo(TestPrefController.TEST_SUMMARY);
+    }
+
+    private static class TestPrefController extends AbstractPreferenceController {
         private static final String KEY_PREF = "test_pref";
+        private static final CharSequence TEST_SUMMARY = "Test";
+
         public boolean isAvailable;
 
         public TestPrefController(Context context) {
@@ -104,6 +113,11 @@ public class AbstractPreferenceControllerTest {
         public String getPreferenceKey() {
             return KEY_PREF;
         }
+
+        @Override
+        public CharSequence getSummary() {
+            return TEST_SUMMARY;
+        }
     }
 
 }