Change the index of enhanced_4g_lte

The carrier app can hide this preference screen by set the carrier
config file and we don't want the settings index this preference screen
when it's hidden. This CL adds this key into non-indexable key list when
the preference screen is hidden.

Bug: 62976860
Test: TeleServiceTests
Change-Id: I72728ada7c2080ee13798bb3563b256e3f768b3f
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index 65287a2..9fbee90 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -131,6 +131,21 @@
                 cr, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0;
     }
 
+    /**
+     * Whether to show the Enhanced 4G LTE settings.
+     *
+     * <p>We show this settings if the VoLTE can be enabled by this device and the carrier app
+     * doesn't set {@link CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL} to false.
+     */
+    public static boolean hideEnhanced4gLteSettings(Context context,
+                PersistableBundle carrierConfig) {
+        return !(ImsManager.isVolteEnabledByPlatform(context)
+            && ImsManager.isVolteProvisionedOnDevice(context))
+            || carrierConfig.getBoolean(
+            CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL);
+
+    }
+
     public static class MobileNetworkFragment extends PreferenceFragment implements
             Preference.OnPreferenceChangeListener, RoamingDialogFragment.RoamingDialogListener {
 
@@ -796,10 +811,7 @@
                 android.util.Log.d(LOG_TAG, "keep ltePref");
             }
 
-            if (!(ImsManager.isVolteEnabledByPlatform(activity)
-                    && ImsManager.isVolteProvisionedOnDevice(activity))
-                    || carrierConfig.getBoolean(
-                        CarrierConfigManager.KEY_HIDE_ENHANCED_4G_LTE_BOOL)) {
+            if (hideEnhanced4gLteSettings(getActivity(), carrierConfig)) {
                 Preference pref = prefSet.findPreference(BUTTON_4G_LTE_KEY);
                 if (pref != null) {
                     prefSet.removePreference(pref);
diff --git a/src/com/android/phone/PhoneSearchIndexablesProvider.java b/src/com/android/phone/PhoneSearchIndexablesProvider.java
index 209d100..1cee227 100644
--- a/src/com/android/phone/PhoneSearchIndexablesProvider.java
+++ b/src/com/android/phone/PhoneSearchIndexablesProvider.java
@@ -36,6 +36,7 @@
 import android.provider.SearchIndexablesContract.RawData;
 import android.provider.SearchIndexablesProvider;
 import android.support.annotation.VisibleForTesting;
+import android.telephony.TelephonyManager;
 import android.telephony.euicc.EuiccManager;
 
 public class PhoneSearchIndexablesProvider extends SearchIndexablesProvider {
@@ -97,6 +98,7 @@
     @Override
     public Cursor queryNonIndexableKeys(String[] projection) {
         MatrixCursor cursor = new MatrixCursor(NON_INDEXABLES_KEYS_COLUMNS);
+
         if (!mUserManager.isAdminUser()) {
             final String[] values = new String[]{"preferred_network_mode_key", "button_roaming_key",
                     "cdma_lte_data_service_key", "enabled_networks_key", "enhanced_4g_lte",
@@ -105,8 +107,13 @@
             for (String nik : values) {
                 cursor.addRow(createNonIndexableRow(nik));
             }
-        } else if (isEuiccSettingsHidden()) {
-            cursor.addRow(createNonIndexableRow("esim_list_profile" /* key */));
+        } else {
+            if (isEuiccSettingsHidden()) {
+                cursor.addRow(createNonIndexableRow("esim_list_profile" /* key */));
+            }
+            if (isEnhanced4gLteHidden()) {
+                cursor.addRow(createNonIndexableRow("enhanced_4g_lte" /* key */));
+            }
         }
         cursor.addRow(createNonIndexableRow("carrier_settings_euicc_key" /* key */));
         return cursor;
@@ -116,6 +123,13 @@
         return !MobileNetworkSettings.showEuiccSettings(getContext());
     }
 
+    @VisibleForTesting boolean isEnhanced4gLteHidden() {
+        TelephonyManager telephonyManager =
+                (TelephonyManager) getContext().getSystemService(Context.TELEPHONY_SERVICE);
+        return MobileNetworkSettings
+                .hideEnhanced4gLteSettings(getContext(), telephonyManager.getCarrierConfig());
+    }
+
     private Object[] createNonIndexableRow(String key) {
         final Object[] ref = new Object[NON_INDEXABLES_KEYS_COLUMNS.length];
         ref[COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE] = key;
diff --git a/tests/src/com/android/phone/PhoneSearchIndexablesProviderTest.java b/tests/src/com/android/phone/PhoneSearchIndexablesProviderTest.java
index 2573780..730db93 100644
--- a/tests/src/com/android/phone/PhoneSearchIndexablesProviderTest.java
+++ b/tests/src/com/android/phone/PhoneSearchIndexablesProviderTest.java
@@ -50,14 +50,23 @@
 
     private class PhoneSearchIndexablesTestProvider extends PhoneSearchIndexablesProvider {
         private boolean mIsEuiccSettingsHidden = false;
+        private boolean mIsEnhanced4gLteHidden = false;
 
         @Override boolean isEuiccSettingsHidden() {
             return mIsEuiccSettingsHidden;
         }
 
+        @Override boolean isEnhanced4gLteHidden() {
+            return mIsEnhanced4gLteHidden;
+        }
+
         public void setIsEuiccSettingsHidden(boolean isEuiccSettingsHidden) {
             mIsEuiccSettingsHidden = isEuiccSettingsHidden;
         }
+
+        public void setIsEnhanced4gLteHidden(boolean isEnhanced4gLteHidden) {
+            mIsEnhanced4gLteHidden = isEnhanced4gLteHidden;
+        }
     }
 
     @Before
@@ -103,8 +112,9 @@
 
     @Test
     public void testQueryNonIndexableKeys() {
+        mProvider.setIsEnhanced4gLteHidden(false /* isEnhanced4gLteHidden */);
+        mProvider.setIsEuiccSettingsHidden(false /* isEuiccSettingsHiden */);
         when(mUserManager.isAdminUser()).thenReturn(false);
-        mProvider.setIsEuiccSettingsHidden(false /* isEuiccSettingsHidden */);
         Cursor cursor1 = mProvider.queryNonIndexableKeys(
                 SearchIndexablesContract.NON_INDEXABLES_KEYS_COLUMNS);
         assertThat(cursor1.getColumnNames()).isEqualTo(
@@ -120,5 +130,10 @@
         Cursor cursor3 = mProvider
                 .queryNonIndexableKeys(SearchIndexablesContract.NON_INDEXABLES_KEYS_COLUMNS);
         assertThat(cursor3.getCount()).isEqualTo(2);
+
+        mProvider.setIsEnhanced4gLteHidden(true /* isEnhanced4gLteHidden */);
+        Cursor cursor4 = mProvider
+                .queryNonIndexableKeys(SearchIndexablesContract.NON_INDEXABLES_KEYS_COLUMNS);
+        assertThat(cursor4.getCount()).isEqualTo(3);
     }
 }