Merge "Add a flag for controlling location indicator settings."
This commit is contained in:
committed by
Android (Google) Code Review
commit
0b2c7f99e8
@@ -147,6 +147,12 @@ public final class Utils extends com.android.settingslib.Utils {
|
|||||||
*/
|
*/
|
||||||
public static final String PROPERTY_LOCATION_INDICATORS_ENABLED = "location_indicators_enabled";
|
public static final String PROPERTY_LOCATION_INDICATORS_ENABLED = "location_indicators_enabled";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to show location indicator settings in developer options.
|
||||||
|
*/
|
||||||
|
public static final String PROPERTY_LOCATION_INDICATOR_SETTINGS_ENABLED =
|
||||||
|
"location_indicator_settings_enabled";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds a matching activity for a preference's intent. If a matching
|
* Finds a matching activity for a preference's intent. If a matching
|
||||||
* activity is not found, it will remove the preference.
|
* activity is not found, it will remove the preference.
|
||||||
|
@@ -45,6 +45,11 @@ public class LocationIndicatorsPreferenceController extends TogglePreferenceCont
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
|
final boolean isEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY,
|
||||||
|
Utils.PROPERTY_LOCATION_INDICATOR_SETTINGS_ENABLED, false);
|
||||||
|
if (!isEnabled) {
|
||||||
|
return UNSUPPORTED_ON_DEVICE;
|
||||||
|
}
|
||||||
// Location indicators feature is only available on devices that support location.
|
// Location indicators feature is only available on devices that support location.
|
||||||
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION)
|
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION)
|
||||||
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||||
|
@@ -75,6 +75,10 @@ public class LocationIndicatorsPreferenceControllerTest {
|
|||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_locationSupported_shouldReturnAVAILABLE() {
|
public void getAvailabilityStatus_locationSupported_shouldReturnAVAILABLE() {
|
||||||
|
// Enable the settings flags.
|
||||||
|
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
|
||||||
|
Utils.PROPERTY_LOCATION_INDICATOR_SETTINGS_ENABLED, Boolean.toString(true),
|
||||||
|
true);
|
||||||
when(mPackageManager.hasSystemFeature(eq(PackageManager.FEATURE_LOCATION))).thenReturn(
|
when(mPackageManager.hasSystemFeature(eq(PackageManager.FEATURE_LOCATION))).thenReturn(
|
||||||
true);
|
true);
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
||||||
@@ -86,11 +90,31 @@ public class LocationIndicatorsPreferenceControllerTest {
|
|||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_locationNotSupported_shouldReturnUNSUPPORTED() {
|
public void getAvailabilityStatus_locationNotSupported_shouldReturnUNSUPPORTED() {
|
||||||
|
// Enable the settings flags.
|
||||||
|
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
|
||||||
|
Utils.PROPERTY_LOCATION_INDICATOR_SETTINGS_ENABLED, Boolean.toString(true),
|
||||||
|
true);
|
||||||
when(mPackageManager.hasSystemFeature(eq(PackageManager.FEATURE_LOCATION))).thenReturn(
|
when(mPackageManager.hasSystemFeature(eq(PackageManager.FEATURE_LOCATION))).thenReturn(
|
||||||
false);
|
false);
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify the location indicator settings are not visible when location indicator settings
|
||||||
|
* are disabled on the device.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void getAvailabilityStatus_flagDisabled_shouldReturnUNSUPPORTED() {
|
||||||
|
// Disable the settings flags.
|
||||||
|
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_PRIVACY,
|
||||||
|
Utils.PROPERTY_LOCATION_INDICATOR_SETTINGS_ENABLED, Boolean.toString(false),
|
||||||
|
false);
|
||||||
|
when(mPackageManager.hasSystemFeature(eq(PackageManager.FEATURE_LOCATION))).thenReturn(
|
||||||
|
true);
|
||||||
|
|
||||||
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verify the location indicator preference is checked when the feature is enabled.
|
* Verify the location indicator preference is checked when the feature is enabled.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user