Merge "Import translations. DO NOT MERGE" into oc-dr1-dev
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);
     }
 }