From 516b0f1b8345d8316bff3faa687d2cc1a5a1aad7 Mon Sep 17 00:00:00 2001 From: Matthew Fritze Date: Thu, 26 Jan 2017 14:37:48 -0800 Subject: [PATCH] Add Adaptive brightness as an inline result in Search Bug: 34740449 Test: make RunSettingsRoboTests Change-Id: I71acdcc04780a76263171a9d312d88a1eb61624a --- src/com/android/settings/DisplaySettings.java | 7 ++++++ .../AutoBrightnessPreferenceController.java | 15 ++++++++++++ .../settings/search2/InlineSwitchPayload.java | 16 +++++++++++-- ...utoBrightnessPreferenceControllerTest.java | 23 +++++++++++++++++++ .../search/DatabaseIndexingUtilsTest.java | 15 ++++-------- 5 files changed, 63 insertions(+), 13 deletions(-) diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java index 91b193d5c44..2a060c06613 100644 --- a/src/com/android/settings/DisplaySettings.java +++ b/src/com/android/settings/DisplaySettings.java @@ -185,5 +185,12 @@ public class DisplaySettings extends DashboardFragment { return result; } + + @Override + public List getPreferenceControllers(Context context) { + final List controllers = new ArrayList<>(); + controllers.add(new AutoBrightnessPreferenceController(context)); + return controllers; + } }; } diff --git a/src/com/android/settings/display/AutoBrightnessPreferenceController.java b/src/com/android/settings/display/AutoBrightnessPreferenceController.java index 1d644a441de..83304c252ce 100644 --- a/src/com/android/settings/display/AutoBrightnessPreferenceController.java +++ b/src/com/android/settings/display/AutoBrightnessPreferenceController.java @@ -18,7 +18,12 @@ import android.provider.Settings; import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.Preference; +import android.util.ArrayMap; import com.android.settings.core.PreferenceController; +import com.android.settings.search2.InlineSwitchPayload; +import com.android.settings.search2.ResultPayload; + +import java.util.Map; import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE; import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; @@ -59,4 +64,14 @@ public class AutoBrightnessPreferenceController extends PreferenceController imp auto ? SCREEN_BRIGHTNESS_MODE_AUTOMATIC : SCREEN_BRIGHTNESS_MODE_MANUAL); return true; } + + @Override + public ResultPayload getResultPayload() { + final Map valueMap = new ArrayMap<>(); + valueMap.put(SCREEN_BRIGHTNESS_MODE_AUTOMATIC, true); + valueMap.put(SCREEN_BRIGHTNESS_MODE_MANUAL, false); + + return new InlineSwitchPayload(SCREEN_BRIGHTNESS_MODE, + ResultPayload.SettingsSource.SYSTEM, valueMap); + } } diff --git a/src/com/android/settings/search2/InlineSwitchPayload.java b/src/com/android/settings/search2/InlineSwitchPayload.java index 76fb0487290..b0099761948 100644 --- a/src/com/android/settings/search2/InlineSwitchPayload.java +++ b/src/com/android/settings/search2/InlineSwitchPayload.java @@ -21,7 +21,6 @@ import android.content.Context; import android.os.Parcel; import android.os.Parcelable; import android.provider.Settings; -import android.util.ArrayMap; import java.util.Map; @@ -39,7 +38,7 @@ public class InlineSwitchPayload extends InlinePayload { public final Map valueMap; public InlineSwitchPayload(String newUri, @SettingsSource int settingsSource, - ArrayMap map) { + Map map) { super(newUri, PayloadType.INLINE_SWITCH, settingsSource); valueMap = map; } @@ -91,6 +90,16 @@ public class InlineSwitchPayload extends InlinePayload { case SettingsSource.SECURE: settingsValue = Settings.Secure.getInt(context.getContentResolver(), settingsUri, 0); + break; + case SettingsSource.SYSTEM: + settingsValue = Settings.System.getInt(context.getContentResolver(), + settingsUri, 0); + break; + + case SettingsSource.GLOBAL: + settingsValue = Settings.Global.getInt(context.getContentResolver(), + settingsUri, 0); + break; } if (settingsValue == -1) { @@ -126,10 +135,13 @@ public class InlineSwitchPayload extends InlinePayload { switch(settingSource) { case SettingsSource.GLOBAL: + Settings.Global.putInt(context.getContentResolver(), settingsUri, switchValue); return; case SettingsSource.SECURE: Settings.Secure.putInt(context.getContentResolver(), settingsUri, switchValue); + return; case SettingsSource.SYSTEM: + Settings.System.putInt(context.getContentResolver(), settingsUri, switchValue); return; case SettingsSource.UNKNOWN: return; diff --git a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java index 10a8b0b6e89..cc9b6d035c4 100644 --- a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java @@ -20,6 +20,9 @@ import android.content.Context; import android.provider.Settings; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; +import com.android.settings.gestures.DoubleTapPowerPreferenceController; +import com.android.settings.search2.InlineSwitchPayload; +import com.android.settings.search2.ResultPayload; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -27,6 +30,7 @@ import org.mockito.Answers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; +import org.robolectric.shadows.ShadowApplication; import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE; import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; @@ -64,4 +68,23 @@ public class AutoBrightnessPreferenceControllerTest { SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_AUTOMATIC); assertThat(mode).isEqualTo(SCREEN_BRIGHTNESS_MODE_MANUAL); } + + @Test + public void testPreferenceController_ProperResultPayloadType() { + final Context context = ShadowApplication.getInstance().getApplicationContext(); + mController = new AutoBrightnessPreferenceController(context); + ResultPayload payload = mController.getResultPayload(); + assertThat(payload).isInstanceOf(InlineSwitchPayload.class); + } + + @Test + public void testPreferenceController_CorrectPayload() { + final Context context = ShadowApplication.getInstance().getApplicationContext(); + mController = new AutoBrightnessPreferenceController(context); + InlineSwitchPayload payload = (InlineSwitchPayload) mController.getResultPayload(); + assertThat(payload.settingsUri).isEqualTo("screen_brightness_mode"); + assertThat(payload.settingSource).isEqualTo(ResultPayload.SettingsSource.SYSTEM); + assertThat(payload.valueMap.get(1)).isEqualTo(true); + assertThat(payload.valueMap.get(0)).isEqualTo(false); + } } diff --git a/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtilsTest.java b/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtilsTest.java index 5b6824d8565..a13a24e0adf 100644 --- a/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtilsTest.java +++ b/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtilsTest.java @@ -24,6 +24,7 @@ import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.core.PreferenceController; +import com.android.settings.display.AutoBrightnessPreferenceController; import com.android.settings.gestures.DoubleTapPowerPreferenceController; import com.android.settings.gestures.DoubleTapScreenPreferenceController; import com.android.settings.gestures.DoubleTwistPreferenceController; @@ -81,19 +82,11 @@ public class DatabaseIndexingUtilsTest { @Test public void testGetPreferenceControllerUriMap_CompatibleClass_ReturnsValidMap() { - String className = "com.android.settings.gestures.GestureSettings"; + String className = "com.android.settings.DisplaySettings"; Map map = DatabaseIndexingUtils.getPreferenceControllerUriMap(className, mContext); - assertThat(map.get("gesture_double_twist")) - .isInstanceOf(DoubleTwistPreferenceController.class); - assertThat(map.get("gesture_swipe_down_fingerprint")) - .isInstanceOf(SwipeToNotificationPreferenceController.class); - assertThat(map.get("gesture_double_tap_screen")) - .isInstanceOf(DoubleTapScreenPreferenceController.class); - assertThat(map.get("gesture_pick_up")) - .isInstanceOf(PickupGesturePreferenceController.class); - assertThat(map.get("gesture_double_tap_power")) - .isInstanceOf(DoubleTapPowerPreferenceController.class); + assertThat(map.get("auto_brightness")) + .isInstanceOf(AutoBrightnessPreferenceController.class); } @Test