Merge "Update the background color of dismissal view to align with notification"
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 521d709..b8bd424 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -1378,6 +1378,26 @@
          <item>@string/wifi_calling_mode_cellular_preferred_summary</item>
     </string-array>
 
+    <!-- Carrier variant of Enhaced 4G LTE Mode title.  [CHAR LIMIT=NONE] -->
+    <string-array name="enhanced_4g_lte_mode_title_variant">
+        <!-- 0: Default -->
+        <item>@string/enhanced_4g_lte_mode_title</item>
+        <!-- 1: Verizon -->
+        <item>@string/enhanced_4g_lte_mode_title_advanced_calling</item>
+        <!-- 2: All carriers who want 4G -->
+        <item>@string/enhanced_4g_lte_mode_title_4g_calling</item>
+    </string-array>
+
+    <!-- Carrier variant of Enhaced 4G LTE Mode summary.  [CHAR LIMIT=NONE] -->
+    <string-array name="enhanced_4g_lte_mode_sumary_variant">
+        <!-- 0: Default -->
+        <item>@string/enhanced_4g_lte_mode_summary</item>
+        <!-- 1: Verizon -->
+        <item>@string/enhanced_4g_lte_mode_summary</item>
+        <!-- 2: All carriers who want 4G -->
+        <item>@string/enhanced_4g_lte_mode_summary_4g_calling</item>
+    </string-array>
+
     <!-- Bluetooth icon foreground colors -->
     <integer-array name="bt_icon_fg_colors">
         <item>@color/bt_color_icon_1</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9b23ca9..7701d47 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6921,9 +6921,15 @@
     <!-- Access point names title.  [CHAR LIMIT=50] -->
     <string name="access_point_names">Access point names</string>
     <!-- Enhaced 4G LTE Mode title.  [CHAR LIMIT=50] -->
-    <string name="enhanced_4g_lte_mode_title">Enhanced 4G LTE Mode</string>
+    <string name="enhanced_4g_lte_mode_title">VoLTE</string>
+    <!-- Enhaced 4G LTE Mode title for carriers who want to show Advanced Calling.  [CHAR LIMIT=50] -->
+    <string name="enhanced_4g_lte_mode_title_advanced_calling">Advanced Calling</string>
+    <!-- Enhaced 4G LTE Mode title for carriers who want to show 4G Calling.  [CHAR LIMIT=50] -->
+    <string name="enhanced_4g_lte_mode_title_4g_calling">4G Calling</string>
     <!-- Enhaced 4G LTE Mode summary.  [CHAR LIMIT=100] -->
-    <string name="enhanced_4g_lte_mode_summary">Use LTE data to enhance voice and communications (Recommended)</string>
+    <string name="enhanced_4g_lte_mode_summary">Use LTE services to improve voice and other communications (recommended)</string>
+    <!-- Enhaced 4G LTE Mode summary for 4g calling.  [CHAR LIMIT=100] -->
+    <string name="enhanced_4g_lte_mode_summary_4g_calling">Use 4G services to improve voice and other communications (recommended)</string>
     <!-- Preferred network type title.  [CHAR LIMIT=50] -->
     <string name="preferred_network_type_title">Preferred network type</string>
     <!-- Preferred network type summary.  [CHAR LIMIT=100] -->
@@ -10534,8 +10540,6 @@
     <!-- Message informs the user that has no SIM card in personalized Settings [CHAR LIMIT=30] -->
     <string name="no_sim_card">No SIM card</string>
 
-    <!-- Carrier variant of Enhaced 4G LTE Mode title.  [CHAR LIMIT=50] -->
-    <string name="enhanced_4g_lte_mode_title_variant">Advanced Calling</string>
     <!-- The following strings are summaries for preferred network modes in Mobile network settings,
      and have a character limit of 100 -->
     <!-- WCDMA preferred [CHAR LIMIT=NONE] -->
diff --git a/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceController.java b/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceController.java
index c510294..161c218 100644
--- a/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceController.java
+++ b/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceController.java
@@ -17,6 +17,7 @@
 package com.android.settings.network.telephony;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.os.Looper;
 import android.os.PersistableBundle;
 import android.telephony.CarrierConfigManager;
@@ -52,12 +53,18 @@
     ImsManager mImsManager;
     private PhoneCallStateListener mPhoneStateListener;
     private final List<On4gLteUpdateListener> m4gLteListeners;
+    private final CharSequence[] mVariantTitles;
+    private final CharSequence[] mVariantSumaries;
 
     public Enhanced4gLtePreferenceController(Context context, String key) {
         super(context, key);
         mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
         m4gLteListeners = new ArrayList<>();
         mPhoneStateListener = new PhoneCallStateListener(Looper.getMainLooper());
+        mVariantTitles = context.getResources()
+                .getTextArray(R.array.enhanced_4g_lte_mode_title_variant);
+        mVariantSumaries = context.getResources()
+                .getTextArray(R.array.enhanced_4g_lte_mode_sumary_variant);
     }
 
     @Override
@@ -94,12 +101,20 @@
     public void updateState(Preference preference) {
         super.updateState(preference);
         final SwitchPreference switchPreference = (SwitchPreference) preference;
-        final boolean useVariant4glteTitle = mCarrierConfig.getInt(
-                CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT) != 0;
-        int enhanced4glteModeTitleId = useVariant4glteTitle ?
-                R.string.enhanced_4g_lte_mode_title_variant :
-                R.string.enhanced_4g_lte_mode_title;
-        switchPreference.setTitle(enhanced4glteModeTitleId);
+        final int variant4glteTitleIndex = mCarrierConfig.getInt(
+                CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT);
+
+        // Default index 0 indicates the default title/sumary string
+        CharSequence enhanced4glteModeTitle = mVariantTitles[0];
+        CharSequence enhanced4glteModeSummary = mVariantSumaries[0];
+        if (variant4glteTitleIndex >= 0 && variant4glteTitleIndex < mVariantTitles.length) {
+            enhanced4glteModeTitle = mVariantTitles[variant4glteTitleIndex];
+        }
+        if (variant4glteTitleIndex >= 0 && variant4glteTitleIndex < mVariantSumaries.length) {
+            enhanced4glteModeSummary = mVariantSumaries[variant4glteTitleIndex];
+        }
+        switchPreference.setTitle(enhanced4glteModeTitle);
+        switchPreference.setSummary(enhanced4glteModeSummary);
         switchPreference.setEnabled(is4gLtePrefEnabled());
         switchPreference.setChecked(mImsManager.isEnhanced4gLteModeSettingEnabledByUser()
                 && mImsManager.isNonTtyOrTtyOnVolteEnabled());
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppButtonsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppButtonsPreferenceControllerTest.java
index f3d85d3..59aea3d 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppButtonsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppButtonsPreferenceControllerTest.java
@@ -324,7 +324,7 @@
 
         final boolean controllable = mController.handleDisableable();
 
-        verify(mButtonPrefs).setButton2Text(R.string.uninstall_text);
+        verify(mButtonPrefs).setButton2Text(R.string.disable_text);
         assertThat(controllable).isFalse();
     }
 
@@ -336,7 +336,7 @@
 
         final boolean controllable = mController.handleDisableable();
 
-        verify(mButtonPrefs).setButton2Text(R.string.uninstall_text);
+        verify(mButtonPrefs).setButton2Text(R.string.disable_text);
         assertThat(controllable).isTrue();
     }
 
@@ -348,7 +348,7 @@
 
         final boolean controllable = mController.handleDisableable();
 
-        verify(mButtonPrefs).setButton2Text(R.string.install_text);
+        verify(mButtonPrefs).setButton2Text(R.string.enable_text);
         assertThat(controllable).isTrue();
     }
 
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/DrawOverlayDetailsTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/DrawOverlayDetailsTest.java
index ca99361..fdbf8b9 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/DrawOverlayDetailsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/DrawOverlayDetailsTest.java
@@ -16,43 +16,26 @@
 
 package com.android.settings.applications.appinfo;
 
-import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
-
-import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.app.settings.SettingsEnums;
-import android.view.Window;
 import android.view.WindowManager.LayoutParams;
 
-import androidx.fragment.app.FragmentActivity;
-
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.testutils.shadow.ShadowAppInfoBase;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.mockito.Spy;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
 
 @RunWith(RobolectricTestRunner.class)
 public class DrawOverlayDetailsTest {
 
-    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
-    private FragmentActivity mActivity;
-
-    @Mock
-    private Window mWindow;
-
     private LayoutParams layoutParams;
 
     private FakeFeatureFactory mFeatureFactory;
@@ -82,23 +65,4 @@
                 MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_DENY,
                 mFragment.getMetricsCategory(), "app", 0);
     }
-
-    @Test
-    @Config(shadows = {ShadowAppInfoBase.class})
-    public void hideNonSystemOverlaysWhenResumed() {
-        when(mFragment.getActivity()).thenReturn(mActivity);
-        when(mActivity.getWindow()).thenReturn(mWindow);
-        when(mWindow.getAttributes()).thenReturn(layoutParams);
-
-        mFragment.onResume();
-        verify(mWindow).addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
-
-        mFragment.onPause();
-
-        // There's no Window.clearPrivateFlags() method, so the Window.attributes are updated.
-        ArgumentCaptor<LayoutParams> paramCaptor = ArgumentCaptor.forClass(LayoutParams.class);
-        verify(mWindow).setAttributes(paramCaptor.capture());
-        assertEquals(0,
-                paramCaptor.getValue().privateFlags & SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
-    }
 }
diff --git a/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorSliceTest.java b/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorSliceTest.java
index ab3f4de..c551960 100644
--- a/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorSliceTest.java
+++ b/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorSliceTest.java
@@ -45,6 +45,7 @@
 import com.android.settingslib.media.MediaOutputSliceConstants;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
@@ -59,6 +60,7 @@
 
 @RunWith(RobolectricTestRunner.class)
 @Config(shadows = {ShadowBluetoothAdapter.class})
+@Ignore("b/129292771")
 public class MediaOutputIndicatorSliceTest {
 
     private static final String TEST_DEVICE_NAME = "test_device_name";
diff --git a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java
index 78ed4b5..9957cde 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/Enhanced4gLtePreferenceControllerTest.java
@@ -102,13 +102,27 @@
     }
 
     @Test
-    public void updateState_variant4gLte_useVariantTitle() {
-        mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 1);
-
+    public void updateState_variant4gLte_useVariantTitleAndSummary() {
+        mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 0);
         mController.updateState(mPreference);
-
         assertThat(mPreference.getTitle()).isEqualTo(
-                mContext.getString(R.string.enhanced_4g_lte_mode_title_variant));
+                mContext.getString(R.string.enhanced_4g_lte_mode_title));
+        assertThat(mPreference.getSummary()).isEqualTo(
+            mContext.getString(R.string.enhanced_4g_lte_mode_summary));
+
+        mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 1);
+        mController.updateState(mPreference);
+        assertThat(mPreference.getTitle()).isEqualTo(
+            mContext.getString(R.string.enhanced_4g_lte_mode_title_advanced_calling));
+        assertThat(mPreference.getSummary()).isEqualTo(
+            mContext.getString(R.string.enhanced_4g_lte_mode_summary));
+
+        mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 2);
+        mController.updateState(mPreference);
+        assertThat(mPreference.getTitle()).isEqualTo(
+            mContext.getString(R.string.enhanced_4g_lte_mode_title_4g_calling));
+        assertThat(mPreference.getSummary()).isEqualTo(
+            mContext.getString(R.string.enhanced_4g_lte_mode_summary_4g_calling));
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/notification/AppNotificationSettingsTest.java b/tests/robotests/src/com/android/settings/notification/AppNotificationSettingsTest.java
deleted file mode 100644
index 9555a56..0000000
--- a/tests/robotests/src/com/android/settings/notification/AppNotificationSettingsTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.android.settings.notification;
-
-import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.view.Window;
-import android.view.WindowManager;
-
-import androidx.fragment.app.FragmentActivity;
-import androidx.fragment.app.FragmentManager;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-
-@RunWith(RobolectricTestRunner.class)
-public class AppNotificationSettingsTest {
-
-    private WindowManager.LayoutParams mLayoutParams;
-    private AppNotificationSettings mFragment;
-    private FragmentActivity mActivity;
-    @Mock
-    private Window mWindow;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mLayoutParams = new WindowManager.LayoutParams();
-        mActivity = spy(Robolectric.setupActivity(FragmentActivity.class));
-        mFragment = spy(new AppNotificationSettings());
-        when(mFragment.getActivity()).thenReturn(mActivity);
-        when(mFragment.getFragmentManager()).thenReturn(mock(FragmentManager.class));
-        when(mActivity.getWindow()).thenReturn(mWindow);
-        when(mWindow.getAttributes()).thenReturn(mLayoutParams);
-    }
-
-    @Test
-    @Config(shadows = {ShadowNotificationSettingsBase.class})
-    public void onResume_shouldHideSystemOverlay() {
-        mFragment.onResume();
-
-        verify(mWindow).addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
-    }
-
-    @Test
-    @Config(shadows = {ShadowNotificationSettingsBase.class})
-    public void onPause_shouldRemoveHideSystemOverlay() {
-        mFragment.onResume();
-
-        verify(mWindow).addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
-
-        mFragment.onPause();
-
-        // There's no Window.clearPrivateFlags() method, so the Window.attributes are updated.
-        ArgumentCaptor<WindowManager.LayoutParams> paramCaptor = ArgumentCaptor.forClass(
-                WindowManager.LayoutParams.class);
-        verify(mWindow).setAttributes(paramCaptor.capture());
-        assertEquals(0,
-                paramCaptor.getValue().privateFlags
-                        & SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
-    }
-
-    @Implements(NotificationSettingsBase.class)
-    public static class ShadowNotificationSettingsBase {
-
-        protected void __constructor__() {
-            // Do nothing
-        }
-
-        @Implementation
-        protected void onResume() {
-            // No-op.
-        }
-
-        @Implementation
-        protected void onPause() {
-            // No-op.
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingDisclaimerFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingDisclaimerFragmentTest.java
index 6c221e7..25fa737 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingDisclaimerFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingDisclaimerFragmentTest.java
@@ -35,6 +35,7 @@
 import android.view.ViewGroup;
 import android.widget.Button;
 
+import androidx.fragment.app.FragmentActivity;
 import androidx.recyclerview.widget.RecyclerView;
 import androidx.recyclerview.widget.RecyclerView.OnScrollListener;
 
@@ -60,7 +61,7 @@
 public class WifiCallingDisclaimerFragmentTest {
 
     @Mock
-    private Activity mActivity;
+    private FragmentActivity mActivity;
     @Mock
     private DisclaimerItem mDisclaimerItem;
     @Mock
@@ -89,7 +90,7 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
 
-        mActivity = Robolectric.setupActivity(Activity.class);
+        mActivity = Robolectric.setupActivity(FragmentActivity.class);
         mFragment = spy(new WifiCallingDisclaimerFragment());
 
         doReturn(mActivity).when(mFragment).getActivity();
diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
index 574d0d6..947d618 100644
--- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
@@ -77,6 +77,7 @@
 import com.android.settingslib.wifi.AccessPoint;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
@@ -98,6 +99,7 @@
 
 @RunWith(RobolectricTestRunner.class)
 @Config(shadows = {ShadowDevicePolicyManager.class, ShadowEntityHeaderController.class})
+@Ignore("b/129292549")
 public class WifiDetailPreferenceControllerTest {
 
     private static final int LEVEL = 1;
diff --git a/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java b/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java
index 75a9e11..e9f35d8 100644
--- a/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java
@@ -139,7 +139,7 @@
 
     private AccessPoint createAccessPoint(String name, boolean active, boolean reachable) {
         final AccessPoint accessPoint = mock(AccessPoint.class);
-        doReturn(name).when(accessPoint).getConfigName();
+        doReturn(name).when(accessPoint).getTitle();
         doReturn(active).when(accessPoint).isActive();
         doReturn(reachable).when(accessPoint).isReachable();
         if (active) {