Make some display related slices public.

Only PreferenceControllers with isPublicSlice() set to true are exposed
to other apps. Others will be Settings only.

Bug: 141088937
Test: robotests
Change-Id: I2a36da4ac4bb14a4d2ac7b89ab2bb3ebf8e655f7
This commit is contained in:
Yi-Ling Chuang
2019-11-27 14:25:56 +08:00
parent 617458b07c
commit 31719321af
15 changed files with 137 additions and 74 deletions

View File

@@ -36,7 +36,7 @@ public class AdaptiveSleepDetailPreferenceController extends AdaptiveSleepPrefer
} }
@Override @Override
public boolean isSliceable() { public boolean isPublicSlice() {
return true; return true;
} }

View File

@@ -55,6 +55,11 @@ public class AmbientDisplayAlwaysOnPreferenceController extends TogglePreference
return TextUtils.equals(getPreferenceKey(), "ambient_display_always_on"); return TextUtils.equals(getPreferenceKey(), "ambient_display_always_on");
} }
@Override
public boolean isPublicSlice() {
return true;
}
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return getConfig().alwaysOnEnabled(MY_USER); return getConfig().alwaysOnEnabled(MY_USER);

View File

@@ -88,6 +88,11 @@ public class AmbientDisplayNotificationsPreferenceController extends
return TextUtils.equals(getPreferenceKey(), "ambient_display_notification"); return TextUtils.equals(getPreferenceKey(), "ambient_display_notification");
} }
@Override
public boolean isPublicSlice() {
return true;
}
private AmbientDisplayConfiguration getAmbientConfig() { private AmbientDisplayConfiguration getAmbientConfig() {
if (mConfig == null) { if (mConfig == null) {
mConfig = new AmbientDisplayConfiguration(mContext); mConfig = new AmbientDisplayConfiguration(mContext);

View File

@@ -33,7 +33,7 @@ public class AutoBrightnessDetailPreferenceController extends AutoBrightnessPref
} }
@Override @Override
public boolean isSliceable() { public boolean isPublicSlice() {
return true; return true;
} }
} }

View File

@@ -81,6 +81,11 @@ public class AutoRotatePreferenceController extends TogglePreferenceController i
return TextUtils.equals(getPreferenceKey(), "auto_rotate"); return TextUtils.equals(getPreferenceKey(), "auto_rotate");
} }
@Override
public boolean isPublicSlice() {
return true;
}
@Override @Override
public boolean isChecked() { public boolean isChecked() {
return !RotationPolicy.isRotationLocked(mContext); return !RotationPolicy.isRotationLocked(mContext);

View File

@@ -63,6 +63,11 @@ public class NightDisplayActivationPreferenceController extends TogglePreference
return TextUtils.equals(getPreferenceKey(), "night_display_activated"); return TextUtils.equals(getPreferenceKey(), "night_display_activated");
} }
@Override
public boolean isPublicSlice() {
return true;
}
@Override @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);

View File

@@ -50,6 +50,11 @@ public class NightDisplayIntensityPreferenceController extends SliderPreferenceC
return TextUtils.equals(getPreferenceKey(), "night_display_temperature"); return TextUtils.equals(getPreferenceKey(), "night_display_temperature");
} }
@Override
public boolean isPublicSlice() {
return true;
}
@Override @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen); super.displayPreference(screen);

View File

@@ -61,6 +61,11 @@ public class AdaptiveSleepDetailPreferenceControllerTest {
assertThat(mController.isSliceable()).isTrue(); assertThat(mController.isSliceable()).isTrue();
} }
@Test
public void isPublicSlice_returnTrue() {
assertThat(mController.isPublicSlice()).isTrue();
}
@Test @Test
public void getAvailabilityStatus_configTrueSet_shouldReturnAvailable() { public void getAvailabilityStatus_configTrueSet_shouldReturnAvailable() {
SettingsShadowResources.overrideResource(R.bool.config_adaptive_sleep_available, true); SettingsShadowResources.overrideResource(R.bool.config_adaptive_sleep_available, true);

View File

@@ -133,10 +133,10 @@ public class AdaptiveSleepPreferenceControllerTest {
} }
@Test @Test
public void isSliceable_returnsFalse() { public void isSliceable_returnsTrue() {
final AdaptiveSleepPreferenceController controller = final AdaptiveSleepPreferenceController controller =
new AdaptiveSleepPreferenceController(mContext, "any_key"); new AdaptiveSleepPreferenceController(mContext, "any_key");
assertThat(controller.isSliceable()).isFalse(); assertThat(controller.isSliceable()).isTrue();
} }
@Test @Test

View File

@@ -128,4 +128,9 @@ public class AmbientDisplayAlwaysOnPreferenceControllerTest {
new AmbientDisplayAlwaysOnPreferenceController(mContext, "bad_key"); new AmbientDisplayAlwaysOnPreferenceController(mContext, "bad_key");
assertThat(controller.isSliceable()).isFalse(); assertThat(controller.isSliceable()).isFalse();
} }
@Test
public void isPublicSlice_returnTrue() {
assertThat(mController.isPublicSlice()).isTrue();
}
} }

View File

@@ -171,4 +171,9 @@ public class AmbientDisplayNotificationsPreferenceControllerTest {
new AmbientDisplayNotificationsPreferenceController(mContext, "bad_key"); new AmbientDisplayNotificationsPreferenceController(mContext, "bad_key");
assertThat(controller.isSliceable()).isFalse(); assertThat(controller.isSliceable()).isFalse();
} }
@Test
public void isPublicSlice_returnTrue() {
assertThat(mController.isPublicSlice()).isTrue();
}
} }

View File

@@ -51,6 +51,11 @@ public class AutoBrightnessDetailPreferenceControllerTest {
assertThat(mController.isSliceable()).isTrue(); assertThat(mController.isSliceable()).isTrue();
} }
@Test
public void isPublicSlice_returnTrue() {
assertThat(mController.isPublicSlice()).isTrue();
}
@Test @Test
public void getAvailabilityStatus_configTrueSet_shouldReturnAvailable() { public void getAvailabilityStatus_configTrueSet_shouldReturnAvailable() {
SettingsShadowResources.overrideResource( SettingsShadowResources.overrideResource(

View File

@@ -35,7 +35,6 @@ import com.android.settings.core.BasePreferenceController;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowRotationPolicy; import com.android.settings.testutils.shadow.ShadowRotationPolicy;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -153,6 +152,11 @@ public class AutoRotatePreferenceControllerTest {
assertThat(controller.isSliceable()).isFalse(); assertThat(controller.isSliceable()).isFalse();
} }
@Test
public void isPublicSlice_returnTrue() {
assertThat(mController.isPublicSlice()).isTrue();
}
private void enableAutoRotationPreference() { private void enableAutoRotationPreference() {
when(mPackageManager.hasSystemFeature(anyString())).thenReturn(true); when(mPackageManager.hasSystemFeature(anyString())).thenReturn(true);
when(mContext.getResources().getBoolean(anyInt())).thenReturn(true); when(mContext.getResources().getBoolean(anyInt())).thenReturn(true);

View File

@@ -15,6 +15,7 @@
package com.android.settings.display; package com.android.settings.display;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -57,7 +58,7 @@ public class NightDisplayActivationPreferenceControllerTest {
mPreference = new LayoutPreference(mContext, R.layout.night_display_activation_button); mPreference = new LayoutPreference(mContext, R.layout.night_display_activation_button);
when(mScreen.findPreference(anyString())).thenReturn(mPreference); when(mScreen.findPreference(anyString())).thenReturn(mPreference);
mPreferenceController = new NightDisplayActivationPreferenceController(mContext, mPreferenceController = new NightDisplayActivationPreferenceController(mContext,
"night_display_activation"); "night_display_activation");
mPreferenceController.displayPreference(mScreen); mPreferenceController.displayPreference(mScreen);
} }
@@ -83,7 +84,7 @@ public class NightDisplayActivationPreferenceControllerTest {
@Test @Test
public void isSliceableCorrectKey_returnsTrue() { public void isSliceableCorrectKey_returnsTrue() {
final NightDisplayActivationPreferenceController controller = final NightDisplayActivationPreferenceController controller =
new NightDisplayActivationPreferenceController(mContext,"night_display_activated"); new NightDisplayActivationPreferenceController(mContext, "night_display_activated");
assertThat(controller.isSliceable()).isTrue(); assertThat(controller.isSliceable()).isTrue();
} }
@@ -94,6 +95,11 @@ public class NightDisplayActivationPreferenceControllerTest {
assertThat(controller.isSliceable()).isFalse(); assertThat(controller.isSliceable()).isFalse();
} }
@Test
public void isPublicSlice_returnTrue() {
assertThat(mPreferenceController.isPublicSlice()).isTrue();
}
@Test @Test
public void onClick_activates() { public void onClick_activates() {
mColorDisplayManager.setNightDisplayActivated(false); mColorDisplayManager.setNightDisplayActivated(false);

View File

@@ -19,7 +19,9 @@ import static com.google.common.truth.Truth.assertThat;
import android.content.Context; import android.content.Context;
import android.hardware.display.ColorDisplayManager; import android.hardware.display.ColorDisplayManager;
import android.provider.Settings.Secure; import android.provider.Settings.Secure;
import com.android.settings.testutils.shadow.SettingsShadowResources; import com.android.settings.testutils.shadow.SettingsShadowResources;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -32,83 +34,89 @@ import org.robolectric.annotation.Config;
@Config(shadows = SettingsShadowResources.class) @Config(shadows = SettingsShadowResources.class)
public class NightDisplayIntensityPreferenceControllerTest { public class NightDisplayIntensityPreferenceControllerTest {
private Context mContext; private Context mContext;
private NightDisplayIntensityPreferenceController mPreferenceController; private NightDisplayIntensityPreferenceController mPreferenceController;
@Before @Before
public void setUp() { public void setUp() {
mContext = RuntimeEnvironment.application; mContext = RuntimeEnvironment.application;
mPreferenceController = new NightDisplayIntensityPreferenceController(mContext, mPreferenceController = new NightDisplayIntensityPreferenceController(mContext,
"night_display_temperature"); "night_display_temperature");
} }
@After @After
public void tearDown() { public void tearDown() {
SettingsShadowResources.reset(); SettingsShadowResources.reset();
} }
@Test @Test
public void isAvailable_configuredAvailable_isActivated_available() { public void isAvailable_configuredAvailable_isActivated_available() {
SettingsShadowResources.overrideResource( SettingsShadowResources.overrideResource(
com.android.internal.R.bool.config_nightDisplayAvailable, true); com.android.internal.R.bool.config_nightDisplayAvailable, true);
Secure.putInt(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_ACTIVATED, 1); Secure.putInt(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_ACTIVATED, 1);
assertThat(mPreferenceController.isAvailable()).isTrue(); assertThat(mPreferenceController.isAvailable()).isTrue();
} }
@Test @Test
public void isAvailable_configuredAvailable_isNotActivated_available() { public void isAvailable_configuredAvailable_isNotActivated_available() {
SettingsShadowResources.overrideResource( SettingsShadowResources.overrideResource(
com.android.internal.R.bool.config_nightDisplayAvailable, true); com.android.internal.R.bool.config_nightDisplayAvailable, true);
Secure.putInt(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_ACTIVATED, 0); Secure.putInt(mContext.getContentResolver(), Secure.NIGHT_DISPLAY_ACTIVATED, 0);
assertThat(mPreferenceController.isAvailable()).isTrue(); assertThat(mPreferenceController.isAvailable()).isTrue();
} }
@Test @Test
public void isAvailable_configuredUnavailable_unavailable() { public void isAvailable_configuredUnavailable_unavailable() {
SettingsShadowResources.overrideResource( SettingsShadowResources.overrideResource(
com.android.internal.R.bool.config_nightDisplayAvailable, false); com.android.internal.R.bool.config_nightDisplayAvailable, false);
assertThat(mPreferenceController.isAvailable()).isFalse(); assertThat(mPreferenceController.isAvailable()).isFalse();
} }
@Test @Test
public void onPreferenceChange_changesTemperature() { public void onPreferenceChange_changesTemperature() {
SettingsShadowResources.overrideResource( SettingsShadowResources.overrideResource(
com.android.internal.R.integer.config_nightDisplayColorTemperatureMin, 2950); com.android.internal.R.integer.config_nightDisplayColorTemperatureMin, 2950);
SettingsShadowResources.overrideResource( SettingsShadowResources.overrideResource(
com.android.internal.R.integer.config_nightDisplayColorTemperatureMax, 3050); com.android.internal.R.integer.config_nightDisplayColorTemperatureMax, 3050);
// A slider-adjusted "20" here would be 1/5 from the left / least-intense, i.e. 3030. // A slider-adjusted "20" here would be 1/5 from the left / least-intense, i.e. 3030.
mPreferenceController.onPreferenceChange(null, 20); mPreferenceController.onPreferenceChange(null, 20);
assertThat( assertThat(
mContext.getSystemService(ColorDisplayManager.class).getNightDisplayColorTemperature()) mContext.getSystemService(
.isEqualTo(3030); ColorDisplayManager.class).getNightDisplayColorTemperature())
} .isEqualTo(3030);
}
@Test @Test
public void rangeOfSlider_staysWithinValidRange() { public void rangeOfSlider_staysWithinValidRange() {
SettingsShadowResources.overrideResource( SettingsShadowResources.overrideResource(
com.android.internal.R.integer.config_nightDisplayColorTemperatureMin, 2950); com.android.internal.R.integer.config_nightDisplayColorTemperatureMin, 2950);
SettingsShadowResources.overrideResource( SettingsShadowResources.overrideResource(
com.android.internal.R.integer.config_nightDisplayColorTemperatureMax, 3050); com.android.internal.R.integer.config_nightDisplayColorTemperatureMax, 3050);
assertThat(mPreferenceController.getMax() - mPreferenceController.getMin()) assertThat(mPreferenceController.getMax() - mPreferenceController.getMin())
.isGreaterThan(0); .isGreaterThan(0);
} }
@Test @Test
public void getMin_alwaysReturnsZero() { public void getMin_alwaysReturnsZero() {
assertThat(mPreferenceController.getMin()).isEqualTo(0); assertThat(mPreferenceController.getMin()).isEqualTo(0);
} }
@Test @Test
public void isSliceableCorrectKey_returnsTrue() { public void isSliceableCorrectKey_returnsTrue() {
assertThat(mPreferenceController.isSliceable()).isTrue(); assertThat(mPreferenceController.isSliceable()).isTrue();
} }
@Test @Test
public void isSliceableIncorrectKey_returnsFalse() { public void isSliceableIncorrectKey_returnsFalse() {
final NightDisplayIntensityPreferenceController controller = final NightDisplayIntensityPreferenceController controller =
new NightDisplayIntensityPreferenceController(mContext, "bad_key"); new NightDisplayIntensityPreferenceController(mContext, "bad_key");
assertThat(controller.isSliceable()).isFalse(); assertThat(controller.isSliceable()).isFalse();
} }
@Test
public void isPublicSlice_returnTrue() {
assertThat(mPreferenceController.isPublicSlice()).isTrue();
}
} }