Add a flag for controlling location indicator settings.

Bug: 177334097
Test: Manual && make RunSettingsRoboTests ROBOTEST_FILTER=LocationIndicatorsPreferenceControllerTest
Change-Id: I33821ab8328fd18b796a78813b7354a928832792
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index eca3869..e44ee78 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -148,6 +148,12 @@
     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.
      *
diff --git a/src/com/android/settings/location/LocationIndicatorsPreferenceController.java b/src/com/android/settings/location/LocationIndicatorsPreferenceController.java
index f7b7408..d39c280 100644
--- a/src/com/android/settings/location/LocationIndicatorsPreferenceController.java
+++ b/src/com/android/settings/location/LocationIndicatorsPreferenceController.java
@@ -45,6 +45,11 @@
 
     @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;
diff --git a/tests/robotests/src/com/android/settings/location/LocationIndicatorsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/LocationIndicatorsPreferenceControllerTest.java
index e1182fd..912c853 100644
--- a/tests/robotests/src/com/android/settings/location/LocationIndicatorsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/location/LocationIndicatorsPreferenceControllerTest.java
@@ -75,6 +75,10 @@
      */
     @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,12 +90,32 @@
      */
     @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.
      */
     @Test