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";
|
||||
|
||||
/**
|
||||
* 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
|
||||
* activity is not found, it will remove the preference.
|
||||
|
@@ -45,6 +45,11 @@ public class LocationIndicatorsPreferenceController extends TogglePreferenceCont
|
||||
|
||||
@Override
|
||||
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.
|
||||
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION)
|
||||
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||
|
@@ -75,6 +75,10 @@ public class LocationIndicatorsPreferenceControllerTest {
|
||||
*/
|
||||
@Test
|
||||
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(
|
||||
true);
|
||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
||||
@@ -86,11 +90,31 @@ public class LocationIndicatorsPreferenceControllerTest {
|
||||
*/
|
||||
@Test
|
||||
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(
|
||||
false);
|
||||
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.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user