From 3d1da30897da6647656e3f68e6b7ff8974aaf0bc Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 26 Jan 2021 09:42:53 -0800 Subject: [PATCH 1/6] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ie9d9adce35398e4f2b80e97233034ef15cf5c81b --- res/values-my/strings.xml | 4 ++-- res/values-sv/strings.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 98b3f1b19d2..d728559cfeb 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -711,8 +711,8 @@ "ချိတ်ဆက်ရန်" "ချိတ်ဆက်မှု ဖြုတ်ရန်" "တွဲချိတ်ရန်နှင့် ချိတ်ဆက်ရန်" - "တွဲချိတ်ခြင်းကိုပြတ်တောက်ရန်" - "ချိတ်ဆက်ခြင်းရပ်ဆိုင်းရန် နှင့် တွဲချိတ်ခြင်းကိုပြတ်တောက်ရန်" + "တွဲချိတ်မှုဖြုတ်ရန်" + "ချိတ်ဆက်ခြင်းရပ်ဆိုင်းရန် နှင့် တွဲချိတ်မှုဖြုတ်ရန်" "ရွေးချယ်စရာများ" "အဆင့်မြင့်" "အဆင့်မြင့် ဘလူးတုသ်" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 276feba274e..55bd90b054a 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -1876,7 +1876,7 @@ "Ta bort åtkomst" "Kontroller" - "Tvingad avslutning" + "Tvinga att avsluta" "Totalt" "Appstorlek" "Data på USB-lagringsenhet" @@ -2528,7 +2528,7 @@ "Total batterikapacitet" "Beräknad strömförbrukning" "Faktisk strömförbrukning" - "Tvingad avslutning" + "Tvinga att avsluta" "Appinformation" "Appinställningar" "Skärminställningar" From fe25d2494eb025ac27bdeac3b1b492060a2a8096 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Thu, 28 Jan 2021 23:59:35 -0800 Subject: [PATCH 2/6] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I82cd7cade2ecb3469af36801612b453d714d62bd --- res/values-bs/strings.xml | 4 ++-- res/values-es-rUS/strings.xml | 10 +++++----- res/values-eu/strings.xml | 4 ++-- res/values-sv/strings.xml | 2 +- res/values-vi/strings.xml | 6 +++--- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index d3e36cc40c1..13c780b5792 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -534,12 +534,12 @@ "Otisak prsta i PIN" "Otisak prsta i lozinka" "Nastavi bez postavljanja otiska prsta" - "Možete otključati telefon pomoću otiska prsta. Iz sigurnosnih razloga, ova opcija zahtijeva alternativni način zaključavanja ekrana." + "Možete otključati telefon pomoću otiska prsta. Iz sigurnosnih razloga ova opcija zahtijeva alternativni način zaključavanja ekrana." "Otključavanje licem + uzorak" "Otključavanje licem + PIN" "Otključavanje licem + lozinka" "Nastavite s otključavanjem licem" - "Možete otključati telefon pomoću svog lica. Iz sigurnosnih razloga, ova opcija zahtijeva alternativni način zaključavanja ekrana." + "Možete otključati telefon pomoću svog lica. Iz sigurnosnih razloga ova opcija zahtijeva alternativni način zaključavanja ekrana." "Onemogućio administrator, pravila šifriranja ili pohrana akreditiva" "Ništa" "Prevlačenje prstom" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index e60437303f3..af32e0051fa 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -149,7 +149,7 @@ "Dispositivos para llamar" "Otros dispositivos" "Dispositivos guardados" - "Se activará el Bluetooth para sincronizar" + "Se activará el Bluetooth para vincular" "Preferencias de conexión" "Dispositivos conectados previamente" "Conectados anteriormente" @@ -688,9 +688,9 @@ "Debe contener 16 dígitos" "Puede que también tengas que escribir este PIN en el otro dispositivo." "Puede que también tengas que escribir esta clave de acceso en otro dispositivo." - "Para sincronizar con<br><b>%1$s</b><br><br>asegúrate de que se muestre esta clave de acceso:<br><b>%2$s</b>." + "Para vincular con<br><b>%1$s</b><br><br>asegúrate de que se muestre esta clave de acceso:<br><b>%2$s</b>." "¿Desde: <br><b>%1$s</b><br><br>sincronizas con este dispositivo?" - "Para sincronizar con:<br><b>%1$s</b><br><br>Escribe allí:<br><b>%2$s</b> y luego presiona Volver o Enter." + "Para vincular con:<br><b>%1$s</b><br><br>Escribe allí:<br><b>%2$s</b> y luego presiona Volver o Enter." "Permitir el acceso a tus contactos y al historial de llamadas" "No se pudo establecer conexión con %1$s." @@ -2228,7 +2228,7 @@ "Audífonos" "No hay audífonos conectados" "Agregar audífonos" - "Para sincronizar tus audífonos, busca y presiona tu dispositivo en la pantalla siguiente. Asegúrate de que tus audífonos estén en modo de sincronización." + "Para vincular tus audífonos, busca y presiona tu dispositivo en la pantalla siguiente. Asegúrate de que tus audífonos estén en modo de vinculación." "%1$s activo" %1$d audífonos guardados @@ -3273,7 +3273,7 @@ "no interrumpir, programar, notificaciones, bloquear, silenciar, vibrar, suspender, trabajar, enfocar, sonido, silencio, día, día de la semana, fin de semana, noche de la semana, evento" "pantalla, tiempo de bloqueo, tiempo de espera de la pantalla, bloqueo de pantalla" "memoria, caché, datos, eliminar, borrar, liberar, espacio" - "conectado, dispositivo, audífonos, auriculares, bocina, inalámbrico, sincronizar, auricular, música, multimedia" + "conectado, dispositivo, audífonos, auriculares, bocina, inalámbrico, vincular, auricular, música, multimedia" "fondo, pantalla, pantalla bloqueada, tema" "forma del ícono, color destacado, fuente" "predeterminado, asistente" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index a912be84881..0bf5194ee4a 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -1858,7 +1858,7 @@ "PIN kodea, eredua edo pasahitza berrezartzen lagunduko dizu" "Tabletak eta datu pertsonalek aplikazio ezezagunen erasoak jaso ditzakete. Iturburu honetako aplikazioak instalatzen badituzu, onartzen duzu haiek erabiltzeagatik tabletari gerta dakizkiokeen kalteen edo datu-galeren erantzulea zeu zarela." "Telefonoak eta datu pertsonalek aplikazio ezezagunen erasoak jaso ditzakete. Iturburu honetako aplikazioak instalatzen badituzu, onartzen duzu haiek erabiltzeagatik telefonoari gerta dakizkiokeen kalteen edo datu-galeren erantzulea zeu zarela." - "Gailuak eta datu pertsonalek aplikazio ezezagunen erasoak jaso ditzakete. Iturburu honetako aplikazioak instalatzen badituzu, onartu egingo duzu haiek erabiltzeagatik gailuari agian gertatuko zaizkion kalteen edo datu-galeren erantzulea zeu izango zarela." + "Gailuak eta datu pertsonalek aplikazio ezezagunen erasoak jaso ditzakete. Iturburu honetako aplikazioak instalatzen badituzu, onartuko duzu haiek erabiltzeagatik gailuari agian gertatuko zaizkion kalteen edo datu-galeren erantzulea zeu izango zarela." "Ezarpen aurreratuak" "Gaitu ezarpenen aukera gehiago" "Aplikazioen informazioa" @@ -2091,7 +2091,7 @@ "Aukeratu widgeta" "Widgeta sortu eta sartzeko baimena eman?" "Widgeta sortu ondoren, %1$s ostalariak bistaratzen dituen datu guztiak atzitu ahal izango ditu." - "Eman baimena beti widgetak sortzeko eta haietako datuak atzitzeko %1$s ostalariari" + "Eman widgetak sortzeko eta haietako datuak atzitzeko baimena beti %1$s ostalariari" "Erabilera-estatistikak" "Erabilera-estatistikak" "Ordenatzeko irizpidea:" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 55bd90b054a..a766ef96b82 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -2287,7 +2287,7 @@ "Textningsfönstrets färg" "Textningsfönstrets genomskinlighet" "Textfärg" - "Textgenomskinlighet" + "Textopacitet" "Kantfärg" "Typ av kant" "Teckensnittsfamilj" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index feb6571c6e7..4227c544290 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -3487,9 +3487,9 @@ "Đang bật / Các cuộc trò chuyện có thể hiển thị ở dạng biểu tượng nổi" "Cho phép các ứng dụng hiển thị bong bóng" "Một số cuộc trò chuyện sẽ hiển thị dưới dạng biểu tượng nổi ở phía trên cùng của các ứng dụng khác" - "Mọi cuộc trò chuyện đều có thể tạo bong bóng" - "Những cuộc trò chuyện đã chọn có thể tạo bong bóng" - "Không cuộc trò chuyện nào có thể tạo bong bóng" + "Mọi cuộc trò chuyện đều có thể tạo bong bóng trò chuyện" + "Những cuộc trò chuyện đã chọn có thể tạo bong bóng trò chuyện" + "Không cuộc trò chuyện nào có thể tạo bong bóng trò chuyện" "Cuộc trò chuyện" "Danh sách các cuộc trò chuyện không thể tạo bong bóng" "Tắt bong bóng cho cuộc trò chuyện này" From 9e949b1920c18352e68f14be6f6da3424230990e Mon Sep 17 00:00:00 2001 From: Jeremy Goldman Date: Thu, 28 Jan 2021 10:35:22 +0800 Subject: [PATCH 3/6] Unique display name util uses available, rather than active, subscriptions. Test: atest -c SettingsUnitTest Bug: 178560175 Change-Id: Ief035cf3de3ac03fe348095f36bfb78a41f93d2c (cherry picked from commit c14e3b31159a52f0632b3a2dad97ece885abf771) Merged-In: Ief035cf3de3ac03fe348095f36bfb78a41f93d2c --- .../network/InternetPreferenceController.java | 3 +- .../settings/network/ProviderModelSlice.java | 13 ++++++-- .../settings/network/SubscriptionUtil.java | 8 +++-- .../BackupCallingPreferenceController.java | 4 ++- ...iderBackupCallingPreferenceController.java | 2 +- .../MobileNetworkSummaryControllerTest.java | 4 ++- ...RenameMobileNetworkDialogFragmentTest.java | 9 ++++++ .../sim/PreferredSimDialogFragmentTest.java | 4 +++ .../sim/SimSelectNotificationTest.java | 1 + .../wifi/WifiConfigController2Test.java | 2 ++ .../wifi/WifiConfigControllerTest.java | 2 ++ .../wifi/calling/WifiCallingSettingsTest.java | 2 ++ ...NetworkProviderCallsSmsControllerTest.java | 32 +++++++++++++------ .../network/ProviderModelSliceHelperTest.java | 4 +-- .../network/ProviderModelSliceTest.java | 6 +++- .../network/SubscriptionUtilTest.java | 29 ++++++++--------- ...SubscriptionsPreferenceControllerTest.java | 5 +++ .../DefaultSubscriptionControllerTest.java | 15 +++++++-- .../NetworkProviderWifiCallingGroupTest.java | 12 +++---- 19 files changed, 111 insertions(+), 46 deletions(-) diff --git a/src/com/android/settings/network/InternetPreferenceController.java b/src/com/android/settings/network/InternetPreferenceController.java index 0e95e2dcd8b..25ec9123bce 100644 --- a/src/com/android/settings/network/InternetPreferenceController.java +++ b/src/com/android/settings/network/InternetPreferenceController.java @@ -177,6 +177,7 @@ public class InternetPreferenceController extends AbstractPreferenceController i if (subInfo == null) { return; } - mPreference.setSummary(subInfo.getDisplayName()); + mPreference.setSummary(SubscriptionUtil.getUniqueSubscriptionDisplayName( + subInfo, mContext)); } } diff --git a/src/com/android/settings/network/ProviderModelSlice.java b/src/com/android/settings/network/ProviderModelSlice.java index 48c3dc00093..288fe63e89e 100644 --- a/src/com/android/settings/network/ProviderModelSlice.java +++ b/src/com/android/settings/network/ProviderModelSlice.java @@ -182,8 +182,9 @@ public class ProviderModelSlice extends WifiSlice { } final int defaultSubId = subscriptionManager.getDefaultDataSubscriptionId(); log("defaultSubId:" + defaultSubId); - if (!SubscriptionManager.isUsableSubscriptionId(defaultSubId)) { - return; // No subscription - do nothing. + + if (!defaultSubscriptionIsUsable(defaultSubId)) { + return; } boolean isToggleAction = intent.hasExtra(EXTRA_TOGGLE_STATE); @@ -258,4 +259,12 @@ public class ProviderModelSlice extends WifiSlice { .setTitle(mContext.getText(R.string.ethernet)) .setSubtitle(mContext.getText(R.string.cannot_switch_networks_while_connected)); } + + /** + * Wrap the subscriptionManager call for test mocking. + */ + @VisibleForTesting + protected boolean defaultSubscriptionIsUsable(int defaultSubId) { + return SubscriptionManager.isUsableSubscriptionId(defaultSubId); + } } diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java index a0f2df4cc48..aa704593f1f 100644 --- a/src/com/android/settings/network/SubscriptionUtil.java +++ b/src/com/android/settings/network/SubscriptionUtil.java @@ -242,12 +242,14 @@ public class SubscriptionUtil { public CharSequence uniqueName; } - final SubscriptionManager subscriptionManager = - context.getSystemService(SubscriptionManager.class); // Map of SubscriptionId to DisplayName final Supplier> originalInfos = - () -> getActiveSubscriptions(subscriptionManager) + () -> getAvailableSubscriptions(context) .stream() + .filter(i -> { + // Filter out null values. + return (i != null && i.getDisplayName() != null); + }) .map(i -> { DisplayInfo info = new DisplayInfo(); info.subscriptionInfo = i; diff --git a/src/com/android/settings/network/telephony/BackupCallingPreferenceController.java b/src/com/android/settings/network/telephony/BackupCallingPreferenceController.java index daa46708582..2c6c9631754 100644 --- a/src/com/android/settings/network/telephony/BackupCallingPreferenceController.java +++ b/src/com/android/settings/network/telephony/BackupCallingPreferenceController.java @@ -30,6 +30,7 @@ import androidx.preference.Preference; import androidx.preference.SwitchPreference; import com.android.settings.R; +import com.android.settings.network.SubscriptionUtil; import java.util.Objects; @@ -119,7 +120,8 @@ public class BackupCallingPreferenceController extends TelephonyTogglePreference private String getLatestSummary() { SubscriptionInfo subInfo = getSubscriptionInfo(); - return Objects.toString((subInfo == null) ? null : subInfo.getDisplayName(), ""); + return Objects.toString((subInfo == null) ? null + : SubscriptionUtil.getUniqueSubscriptionDisplayName(subInfo, mContext), ""); } private void updateSummary(String displayName) { diff --git a/src/com/android/settings/network/telephony/NetworkProviderBackupCallingPreferenceController.java b/src/com/android/settings/network/telephony/NetworkProviderBackupCallingPreferenceController.java index f6a7d9314d0..b66cea643a2 100644 --- a/src/com/android/settings/network/telephony/NetworkProviderBackupCallingPreferenceController.java +++ b/src/com/android/settings/network/telephony/NetworkProviderBackupCallingPreferenceController.java @@ -104,7 +104,7 @@ public class NetworkProviderBackupCallingPreferenceController extends } SwitchPreference pref = new SwitchPreference(mContext); prefCtrl.updateState(pref); - pref.setTitle(subInfo.getDisplayName()); + pref.setTitle(SubscriptionUtil.getUniqueSubscriptionDisplayName(subInfo, mContext)); return pref; } diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java index 6de83a64a35..097ebaf5e85 100644 --- a/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/MobileNetworkSummaryControllerTest.java @@ -104,6 +104,7 @@ public class MobileNetworkSummaryControllerTest { @After public void tearDown() { + SubscriptionUtil.setActiveSubscriptionsForTesting(null); SubscriptionUtil.setAvailableSubscriptionsForTesting(null); } @@ -269,7 +270,8 @@ public class MobileNetworkSummaryControllerTest { when(sub1.getDisplayName()).thenReturn("sub1"); when(sub2.getDisplayName()).thenReturn("sub2"); - SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(sub1)); + when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn( + Arrays.asList(sub1)); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1)); mController.displayPreference(mPreferenceScreen); mController.onResume(); diff --git a/tests/robotests/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragmentTest.java b/tests/robotests/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragmentTest.java index 4526886e976..d0df92ec8a7 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragmentTest.java @@ -45,8 +45,10 @@ import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentActivity; import com.android.settings.R; +import com.android.settings.network.SubscriptionUtil; import com.android.settings.testutils.shadow.ShadowAlertDialogCompat; +import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; @@ -109,8 +111,15 @@ public class RenameMobileNetworkDialogFragmentTest { mSubscriptionInfoList.add(mSubscriptionInfo); when(mSubscriptionMgr.getAvailableSubscriptionInfoList()).thenReturn( mSubscriptionInfoList); + SubscriptionUtil.setAvailableSubscriptionsForTesting(mSubscriptionInfoList); } + @After + public void tearDown() { + SubscriptionUtil.setAvailableSubscriptionsForTesting(null); + } + + @Test @Ignore public void dialog_subscriptionMissing_noCrash() { diff --git a/tests/robotests/src/com/android/settings/sim/PreferredSimDialogFragmentTest.java b/tests/robotests/src/com/android/settings/sim/PreferredSimDialogFragmentTest.java index 62c2fc5ded3..9bdbbcfeb7e 100644 --- a/tests/robotests/src/com/android/settings/sim/PreferredSimDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/sim/PreferredSimDialogFragmentTest.java @@ -75,6 +75,7 @@ public class PreferredSimDialogFragmentTest extends @Test public void onCreateDialog_twoSimsSelectFirst_correctMessage() { + SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSim1, mSim2)); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(mSim1, mSim2)); mIntent.putExtra(PREFERRED_SIM, 0); @@ -87,6 +88,7 @@ public class PreferredSimDialogFragmentTest extends @Test public void onCreateDialog_twoSimsSelectSecond_correctMessage() { + SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSim1, mSim2)); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(mSim1, mSim2)); mIntent.putExtra(PREFERRED_SIM, 1); @@ -99,6 +101,7 @@ public class PreferredSimDialogFragmentTest extends @Test public void onClick_yesClicked_callsOnSubscriptionSelected() { + SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSim1, mSim2)); mIntent.putExtra(PREFERRED_SIM, 0); final AlertDialog alertDialog = startDialog(); @@ -113,6 +116,7 @@ public class PreferredSimDialogFragmentTest extends @Test public void onClick_noClicked_doesNotCallOnSubscriptionSelected() { + SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSim1, mSim2)); mIntent.putExtra(PREFERRED_SIM, 0); final AlertDialog alertDialog = startDialog(); diff --git a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java index d6a132611f9..a6d33548555 100644 --- a/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java +++ b/tests/robotests/src/com/android/settings/sim/SimSelectNotificationTest.java @@ -130,6 +130,7 @@ public class SimSelectNotificationTest { when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager); when(mTelephonyManager.isDataEnabledForApn(TYPE_MMS)).thenReturn(false); + SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(mSubInfo)); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(mSubInfo)); when(mSubscriptionManager.isActiveSubscriptionId(mSubId)).thenReturn(true); when(mSubscriptionManager.getActiveSubscriptionInfo(mSubId)).thenReturn(mSubInfo); diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java index 80091e6e17b..22e18bbe8ae 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java @@ -49,6 +49,7 @@ import android.widget.Spinner; import android.widget.TextView; import com.android.settings.R; +import com.android.settings.network.SubscriptionUtil; import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settings.wifi.details2.WifiPrivacyPreferenceController2; import com.android.wifitrackerlib.WifiEntry; @@ -834,6 +835,7 @@ public class WifiConfigController2Test { when(subscriptionInfo.getDisplayName()).thenReturn("FAKE-CARRIER"); when(subscriptionInfo.getCarrierId()).thenReturn(carrierId); when(subscriptionInfo.getCarrierName()).thenReturn("FAKE-CARRIER"); + SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(subscriptionInfo)); mShadowSubscriptionManager.setActiveSubscriptionInfoList(Arrays.asList(subscriptionInfo)); mController = new TestWifiConfigController2(mConfigUiBase, mView, mWifiEntry, WifiConfigUiBase2.MODE_CONNECT); diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java index 305f41d3ab9..455e9f186b1 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java @@ -49,6 +49,7 @@ import android.widget.Spinner; import android.widget.TextView; import com.android.settings.R; +import com.android.settings.network.SubscriptionUtil; import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settingslib.wifi.AccessPoint; @@ -629,6 +630,7 @@ public class WifiConfigControllerTest { when(subscriptionInfo.getDisplayName()).thenReturn("FAKE-CARRIER"); when(subscriptionInfo.getCarrierId()).thenReturn(carrierId); when(subscriptionInfo.getCarrierName()).thenReturn("FAKE-CARRIER"); + SubscriptionUtil.setAvailableSubscriptionsForTesting(Arrays.asList(subscriptionInfo)); mShadowSubscriptionManager.setActiveSubscriptionInfoList(Arrays.asList(subscriptionInfo)); mController = new TestWifiConfigController(mConfigUiBase, mView, mAccessPoint, WifiConfigUiBase.MODE_CONNECT); diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsTest.java index 0159f49095a..d7f75e1dd65 100644 --- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsTest.java +++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsTest.java @@ -125,6 +125,8 @@ public class WifiCallingSettingsTest { when(info1.getDisplayName()).thenReturn(DISPLAY_NAME1); when(info2.getDisplayName()).thenReturn(DISPLAY_NAME2); + SubscriptionUtil.setAvailableSubscriptionsForTesting(new ArrayList<>( + Arrays.asList(info1, info2))); SubscriptionUtil.setActiveSubscriptionsForTesting(new ArrayList<>( Arrays.asList(info1, info2))); diff --git a/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java b/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java index 8444f11bf0f..16433c3ad5d 100644 --- a/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java +++ b/tests/unit/src/com/android/settings/network/NetworkProviderCallsSmsControllerTest.java @@ -17,9 +17,13 @@ package com.android.settings.network; import static androidx.lifecycle.Lifecycle.Event; + import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; import android.content.Context; import android.os.Looper; @@ -27,19 +31,17 @@ import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.text.TextUtils; -import com.android.settings.testutils.ResourcesUtils; -import com.android.settingslib.core.lifecycle.Lifecycle; -import com.android.settingslib.RestrictedPreference; - import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; -import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import androidx.test.annotation.UiThreadTest; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; -import androidx.test.InstrumentationRegistry; + +import com.android.settings.testutils.ResourcesUtils; +import com.android.settingslib.RestrictedPreference; +import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; import org.junit.Test; @@ -50,9 +52,6 @@ import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.Arrays; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; @RunWith(AndroidJUnit4.class) public class NetworkProviderCallsSmsControllerTest { @@ -156,6 +155,7 @@ public class NetworkProviderCallsSmsControllerTest { @UiThreadTest public void getSummary_noSim_returnNoSim() { when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn(new ArrayList<>()); + when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn(new ArrayList<>()); displayPreferenceWithLifecycle(); assertTrue(TextUtils.equals(mController.getSummary(), @@ -169,6 +169,8 @@ public class NetworkProviderCallsSmsControllerTest { mSubscriptionInfo1); when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn( Arrays.asList(mSubscriptionInfo1)); + when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn( + Arrays.asList(mSubscriptionInfo1)); displayPreferenceWithLifecycle(); final StringBuilder summary = new StringBuilder(); @@ -188,6 +190,8 @@ public class NetworkProviderCallsSmsControllerTest { setupSubscriptionInfoList(SUB_ID_2, DISPLAY_NAME_2, mSubscriptionInfo2); when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn( Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2)); + when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn( + Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2)); displayPreferenceWithLifecycle(); final StringBuilder summary = new StringBuilder(); @@ -209,6 +213,8 @@ public class NetworkProviderCallsSmsControllerTest { setupSubscriptionInfoList(SUB_ID_1, DISPLAY_NAME_1, mSubscriptionInfo1); when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn( Arrays.asList(mSubscriptionInfo1)); + when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn( + Arrays.asList(mSubscriptionInfo1)); displayPreferenceWithLifecycle(); assertThat(mPreference.getSummary()).isEqualTo(DISPLAY_NAME_1); @@ -221,6 +227,8 @@ public class NetworkProviderCallsSmsControllerTest { setupSubscriptionInfoList(SUB_ID_2, DISPLAY_NAME_2, mSubscriptionInfo2); when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn( Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2)); + when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn( + Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2)); displayPreferenceWithLifecycle(); final StringBuilder summary = new StringBuilder(); @@ -240,6 +248,8 @@ public class NetworkProviderCallsSmsControllerTest { setupSubscriptionInfoList(SUB_ID_2, DISPLAY_NAME_2, mSubscriptionInfo2); when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn( Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2)); + when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn( + Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2)); displayPreferenceWithLifecycle(); final StringBuilder summary = new StringBuilder(); @@ -267,6 +277,8 @@ public class NetworkProviderCallsSmsControllerTest { setupSubscriptionInfoList(SUB_ID_2, DISPLAY_NAME_2, mSubscriptionInfo2); when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn( Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2)); + when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn( + Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2)); displayPreferenceWithLifecycle(); final StringBuilder summary = new StringBuilder(); @@ -294,6 +306,8 @@ public class NetworkProviderCallsSmsControllerTest { setupSubscriptionInfoList(SUB_ID_2, DISPLAY_NAME_2, mSubscriptionInfo2); when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn( Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2)); + when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn( + Arrays.asList(mSubscriptionInfo1, mSubscriptionInfo2)); displayPreferenceWithLifecycle(); final StringBuilder summary = new StringBuilder(); diff --git a/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java b/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java index bee48d122cf..72e9be4a3b3 100644 --- a/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java +++ b/tests/unit/src/com/android/settings/network/ProviderModelSliceHelperTest.java @@ -177,7 +177,7 @@ public class ProviderModelSliceHelperTest { when(mDefaultDataSubscriptionInfo.getDisplayName()).thenReturn(expectDisplayName); when(mSubscriptionManager.getActiveSubscriptionInfo(defaultDataSubId)).thenReturn( mDefaultDataSubscriptionInfo); - when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn( + when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn( Arrays.asList(mDefaultDataSubscriptionInfo)); when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); @@ -207,7 +207,7 @@ public class ProviderModelSliceHelperTest { when(mDefaultDataSubscriptionInfo.getDisplayName()).thenReturn(expectDisplayName); when(mSubscriptionManager.getActiveSubscriptionInfo(defaultDataSubId)).thenReturn( mDefaultDataSubscriptionInfo); - when(mSubscriptionManager.getActiveSubscriptionInfoList()).thenReturn( + when(mSubscriptionManager.getAvailableSubscriptionInfoList()).thenReturn( Arrays.asList(mDefaultDataSubscriptionInfo)); when(mServiceState.getState()).thenReturn(ServiceState.STATE_IN_SERVICE); mBundle.putBoolean(CarrierConfigManager.KEY_INFLATE_SIGNAL_STRENGTH_BOOL, false); diff --git a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java index 9f70bcf9ba0..8f998a4925d 100644 --- a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java +++ b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java @@ -132,7 +132,8 @@ public class ProviderModelSliceTest { SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); mMockNetworkProviderWorker = spy(new MockNetworkProviderWorker(mContext, PROVIDER_MODEL_SLICE_URI)); - mMockProviderModelSlice = new MockProviderModelSlice(mContext, mMockNetworkProviderWorker); + mMockProviderModelSlice = spy(new MockProviderModelSlice( + mContext, mMockNetworkProviderWorker)); mListBuilder = spy(new ListBuilder(mContext, PROVIDER_MODEL_SLICE_URI, ListBuilder.INFINITY).setAccentColor(-1)); when(mProviderModelSliceHelper.createListBuilder(PROVIDER_MODEL_SLICE_URI)).thenReturn( @@ -387,6 +388,7 @@ public class ProviderModelSliceTest { @Test public void onNotifyChange_intentToggleActionOn_shouldSetCarrierNetworkEnabledTrue() { + when(mMockProviderModelSlice.defaultSubscriptionIsUsable(anyInt())).thenReturn(true); Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent(); intent.putExtra(EXTRA_TOGGLE_STATE, true); @@ -397,6 +399,7 @@ public class ProviderModelSliceTest { @Test public void onNotifyChange_intentToggleActionOff_shouldSetCarrierNetworkEnabledFalse() { + when(mMockProviderModelSlice.defaultSubscriptionIsUsable(anyInt())).thenReturn(true); Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent(); intent.putExtra(EXTRA_TOGGLE_STATE, false); @@ -407,6 +410,7 @@ public class ProviderModelSliceTest { @Test public void onNotifyChange_intentPrimaryAction_shouldConnectCarrierNetwork() { + when(mMockProviderModelSlice.defaultSubscriptionIsUsable(anyInt())).thenReturn(true); when(mTelephonyManager.isDataEnabled()).thenReturn(true); Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent(); diff --git a/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java b/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java index 8c99b40a346..c0e5205a77b 100644 --- a/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java +++ b/tests/unit/src/com/android/settings/network/SubscriptionUtilTest.java @@ -48,7 +48,7 @@ public class SubscriptionUtilTest { private static final int SUBID_1 = 1; private static final int SUBID_2 = 2; private static final int SUBID_3 = 3; - private static final CharSequence CARRIER_1 = "carrier1"; + private static final CharSequence CARRIER_1 = "carrier1111111"; private static final CharSequence CARRIER_2 = "carrier2"; private Context mContext; @@ -94,6 +94,8 @@ public class SubscriptionUtilTest { final SubscriptionInfo info2 = mock(SubscriptionInfo.class); when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info1, info2)); + // // TODO remove this line. + // when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info1, info2)); final List subs = SubscriptionUtil.getAvailableSubscriptions(mContext); assertThat(subs).isNotNull(); @@ -143,8 +145,9 @@ public class SubscriptionUtilTest { when(info2.getSubscriptionId()).thenReturn(SUBID_2); when(info1.getDisplayName()).thenReturn(CARRIER_1); when(info2.getDisplayName()).thenReturn(CARRIER_2); - when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn( + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn( Arrays.asList(info1, info2)); + // Arrays.asList(info2)); // Each subscription has a unique last 4 digits of the phone number. TelephonyManager sub1Telmgr = mock(TelephonyManager.class); @@ -172,7 +175,7 @@ public class SubscriptionUtilTest { when(info2.getSubscriptionId()).thenReturn(SUBID_2); when(info1.getDisplayName()).thenReturn(CARRIER_1); when(info2.getDisplayName()).thenReturn(CARRIER_1); - when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn( + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn( Arrays.asList(info1, info2)); // Each subscription has a unique last 4 digits of the phone number. @@ -201,8 +204,7 @@ public class SubscriptionUtilTest { when(info2.getSubscriptionId()).thenReturn(SUBID_2); when(info1.getDisplayName()).thenReturn(CARRIER_1); when(info2.getDisplayName()).thenReturn(CARRIER_1); - when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn( - Arrays.asList(info1, info2)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info1, info2)); // The subscriptions' phone numbers cannot be revealed to the user. TelephonyManager sub1Telmgr = mock(TelephonyManager.class); @@ -234,7 +236,7 @@ public class SubscriptionUtilTest { when(info1.getDisplayName()).thenReturn(CARRIER_1); when(info2.getDisplayName()).thenReturn(CARRIER_1); when(info3.getDisplayName()).thenReturn(CARRIER_1); - when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn( + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn( Arrays.asList(info1, info2, info3)); // Subscription 1 has a unique phone number, but subscriptions 2 and 3 share the same @@ -265,8 +267,7 @@ public class SubscriptionUtilTest { final SubscriptionInfo info1 = mock(SubscriptionInfo.class); when(info1.getSubscriptionId()).thenReturn(SUBID_1); when(info1.getDisplayName()).thenReturn(CARRIER_1); - when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn( - Arrays.asList(info1)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info1)); TelephonyManager sub1Telmgr = mock(TelephonyManager.class); when(sub1Telmgr.getLine1Number()).thenReturn("1112223333"); @@ -288,8 +289,7 @@ public class SubscriptionUtilTest { when(info2.getSubscriptionId()).thenReturn(SUBID_2); when(info1.getDisplayName()).thenReturn(CARRIER_1); when(info2.getDisplayName()).thenReturn(CARRIER_1); - when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn( - Arrays.asList(info1, info2)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info1, info2)); // Each subscription has a unique last 4 digits of the phone number. TelephonyManager sub1Telmgr = mock(TelephonyManager.class); @@ -318,8 +318,7 @@ public class SubscriptionUtilTest { when(info2.getSubscriptionId()).thenReturn(SUBID_2); when(info1.getDisplayName()).thenReturn(CARRIER_1); when(info2.getDisplayName()).thenReturn(CARRIER_1); - when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn( - Arrays.asList(info1, info2)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info1, info2)); // Both subscriptions have a the same 4 digits of the phone number. TelephonyManager sub1Telmgr = mock(TelephonyManager.class); @@ -345,8 +344,7 @@ public class SubscriptionUtilTest { final SubscriptionInfo info1 = mock(SubscriptionInfo.class); when(info1.getSubscriptionId()).thenReturn(SUBID_1); when(info1.getDisplayName()).thenReturn(CARRIER_1); - when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn( - Arrays.asList(info1)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info1)); TelephonyManager sub1Telmgr = mock(TelephonyManager.class); when(sub1Telmgr.getLine1Number()).thenReturn("1112223333"); @@ -366,8 +364,7 @@ public class SubscriptionUtilTest { final SubscriptionInfo info1 = mock(SubscriptionInfo.class); when(info1.getSubscriptionId()).thenReturn(SUBID_1); when(info1.getDisplayName()).thenReturn(CARRIER_1); - when(mSubMgr.getActiveSubscriptionInfoList()).thenReturn( - Arrays.asList(info1)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(info1)); TelephonyManager sub1Telmgr = mock(TelephonyManager.class); when(sub1Telmgr.getLine1Number()).thenReturn("1112223333"); diff --git a/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java index f3e084c5075..ef3f130911f 100644 --- a/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/network/SubscriptionsPreferenceControllerTest.java @@ -272,6 +272,7 @@ public class SubscriptionsPreferenceControllerTest { @UiThreadTest public void onSubscriptionsChanged_subscriptionReplaced_preferencesChanged() { final List subs = setupMockSubscriptions(3); + doReturn(subs).when(mSubscriptionManager).getAvailableSubscriptionInfoList(); // Start out with only sub1 and sub2. SubscriptionUtil.setActiveSubscriptionsForTesting(subs.subList(0, 2)); @@ -388,6 +389,7 @@ public class SubscriptionsPreferenceControllerTest { final List sub = setupMockSubscriptions(1); doReturn(true).when(sInjector).isProviderModelEnabled(mContext); doReturn(sub.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo(); + doReturn(sub).when(mSubscriptionManager).getAvailableSubscriptionInfoList(); mController.onResume(); mController.displayPreference(mPreferenceScreen); @@ -402,6 +404,7 @@ public class SubscriptionsPreferenceControllerTest { final List sub = setupMockSubscriptions(2); doReturn(true).when(sInjector).isProviderModelEnabled(mContext); doReturn(sub.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo(); + doReturn(sub).when(mSubscriptionManager).getAvailableSubscriptionInfoList(); mController.onResume(); mController.displayPreference(mPreferenceScreen); @@ -530,6 +533,7 @@ public class SubscriptionsPreferenceControllerTest { final List sub = setupMockSubscriptions(2); doReturn(true).when(sInjector).isProviderModelEnabled(mContext); doReturn(sub.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo(); + doReturn(sub).when(mSubscriptionManager).getAvailableSubscriptionInfoList(); Intent intent = new Intent(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); mController.onResume(); @@ -548,6 +552,7 @@ public class SubscriptionsPreferenceControllerTest { final int subId = sub.get(0).getSubscriptionId(); doReturn(true).when(sInjector).isProviderModelEnabled(mContext); doReturn(sub.get(0)).when(mSubscriptionManager).getDefaultDataSubscriptionInfo(); + doReturn(sub).when(mSubscriptionManager).getAvailableSubscriptionInfoList(); Intent intent = new Intent(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); mController.onResume(); diff --git a/tests/unit/src/com/android/settings/network/telephony/DefaultSubscriptionControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/DefaultSubscriptionControllerTest.java index 282704ded45..93621d96119 100644 --- a/tests/unit/src/com/android/settings/network/telephony/DefaultSubscriptionControllerTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/DefaultSubscriptionControllerTest.java @@ -54,7 +54,7 @@ import java.util.Arrays; @RunWith(AndroidJUnit4.class) public class DefaultSubscriptionControllerTest { @Mock - private SubscriptionManager mManager; + private SubscriptionManager mSubMgr; @Mock private TelecomManager mTelecomManager; @@ -68,7 +68,7 @@ public class DefaultSubscriptionControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(ApplicationProvider.getApplicationContext()); - when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mManager); + when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubMgr); when(mContext.getSystemService(TelecomManager.class)).thenReturn(mTelecomManager); final String key = "prefkey"; @@ -123,6 +123,7 @@ public class DefaultSubscriptionControllerTest { final SubscriptionInfo sub1 = createMockSub(111, "sub1"); final SubscriptionInfo sub2 = createMockSub(222, "sub2"); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1, sub2)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(sub1, sub2)); mController.setDefaultSubscription(sub1.getSubscriptionId()); mController.displayPreference(mScreen); @@ -152,6 +153,7 @@ public class DefaultSubscriptionControllerTest { final SubscriptionInfo sub1 = createMockSub(111, "sub1"); final SubscriptionInfo sub2 = createMockSub(222, "sub2"); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1, sub2)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(sub1, sub2)); mController.setDefaultSubscription(sub2.getSubscriptionId()); mController.displayPreference(mScreen); @@ -186,6 +188,8 @@ public class DefaultSubscriptionControllerTest { when(sub2.isOpportunistic()).thenReturn(true); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1, sub2, sub3)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn( + Arrays.asList(sub1, sub2, sub3)); mController.setDefaultSubscription(sub1.getSubscriptionId()); mController.displayPreference(mScreen); @@ -240,6 +244,7 @@ public class DefaultSubscriptionControllerTest { // Start with only one sub active, so the pref is not available SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(sub1)); mController.setDefaultSubscription(sub1.getSubscriptionId()); mController.displayPreference(mScreen); @@ -261,6 +266,7 @@ public class DefaultSubscriptionControllerTest { final SubscriptionInfo sub1 = createMockSub(111, "sub1"); final SubscriptionInfo sub2 = createMockSub(222, "sub2"); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1, sub2)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(sub1, sub2)); mController.setDefaultSubscription(sub1.getSubscriptionId()); mController.displayPreference(mScreen); @@ -296,6 +302,7 @@ public class DefaultSubscriptionControllerTest { final SubscriptionInfo sub1 = createMockSub(111, "sub1"); final SubscriptionInfo sub2 = createMockSub(222, "sub2"); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(sub1)); mController.setDefaultSubscription(sub1.getSubscriptionId()); mController.displayPreference(mScreen); @@ -303,6 +310,7 @@ public class DefaultSubscriptionControllerTest { assertThat(mListPreference.isVisible()).isFalse(); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1, sub2)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(sub1, sub2)); mController.onSubscriptionsChanged(); assertThat(mController.isAvailable()).isTrue(); @@ -315,12 +323,15 @@ public class DefaultSubscriptionControllerTest { final SubscriptionInfo sub2 = createMockSub(222, "sub2"); final SubscriptionInfo sub3 = createMockSub(333, "sub3"); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1, sub2)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn(Arrays.asList(sub1, sub2)); mController.setDefaultSubscription(sub1.getSubscriptionId()); mController.displayPreference(mScreen); assertThat(mListPreference.getEntries().length).isEqualTo(3); SubscriptionUtil.setActiveSubscriptionsForTesting(Arrays.asList(sub1, sub2, sub3)); + when(mSubMgr.getAvailableSubscriptionInfoList()).thenReturn( + Arrays.asList(sub1, sub2, sub3)); mController.onSubscriptionsChanged(); assertThat(mController.isAvailable()).isTrue(); diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroupTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroupTest.java index ed6f1610999..660772ed99f 100644 --- a/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroupTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/NetworkProviderWifiCallingGroupTest.java @@ -39,15 +39,15 @@ import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.util.FeatureFlagUtils; -import com.android.settings.network.ims.MockWfcQueryImsState; -import com.android.settingslib.core.lifecycle.Lifecycle; - import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.android.settings.network.ims.MockWfcQueryImsState; +import com.android.settingslib.core.lifecycle.Lifecycle; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -132,10 +132,8 @@ public class NetworkProviderWifiCallingGroupTest { @Test public void shouldShowWifiCallingForSub_invalidSubId_returnFalse() { - when(mSubscriptionManager.getActiveSubscriptionInfo(SUB_ID)).thenReturn(null); - - assertThat(mNetworkProviderWifiCallingGroup.shouldShowWifiCallingForSub(SUB_ID)) - .isEqualTo(false); + assertThat(mNetworkProviderWifiCallingGroup.shouldShowWifiCallingForSub( + SubscriptionManager.INVALID_SUBSCRIPTION_ID)).isEqualTo(false); } @Test From acdb2d29e90c55ed20f16b9609c7709d65a4f8d6 Mon Sep 17 00:00:00 2001 From: changbetty Date: Mon, 21 Sep 2020 18:12:03 +0800 Subject: [PATCH 4/6] [Telephony settings] Settings crashes when rotate screen in Preferred network type When activity is recreated, fragments are automatically reattached. Need to check the savedInstanceState is null or not when we want to add framgment in MobileNetworkActivity. (lost to check in ag/9667137) Bug: 154087690 Test: Manual make RunSettingsRoboTests -j ROBOTEST_FILTER=MobileNetworkActivityTest Change-Id: Id169353f6dc10306dddd823a904f0803b26a6ddc Merged-In: Id169353f6dc10306dddd823a904f0803b26a6ddc --- .../network/telephony/MobileNetworkActivity.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/network/telephony/MobileNetworkActivity.java b/src/com/android/settings/network/telephony/MobileNetworkActivity.java index 7f7dc3a192c..c0a9d311f85 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkActivity.java +++ b/src/com/android/settings/network/telephony/MobileNetworkActivity.java @@ -81,7 +81,7 @@ public class MobileNetworkActivity extends SettingsBaseActivity mCurSubscriptionId = updateSubscriptionIndex; mFragmentForceReload = (mCurSubscriptionId == oldSubId); final SubscriptionInfo info = getSubscription(); - updateSubscriptions(info); + updateSubscriptions(info, null); // If the subscription has changed or the new intent doesnt contain the opt in action, // remove the old discovery dialog. If the activity is being recreated, we will see @@ -132,7 +132,7 @@ public class MobileNetworkActivity extends SettingsBaseActivity // perform registration after mCurSubscriptionId been configured. registerActiveSubscriptionsListener(); - updateSubscriptions(subscription); + updateSubscriptions(subscription, savedInstanceState); } @VisibleForTesting @@ -154,7 +154,7 @@ public class MobileNetworkActivity extends SettingsBaseActivity public void onChanged() { SubscriptionInfo info = getSubscription(); int oldSubIndex = mCurSubscriptionId; - updateSubscriptions(info); + updateSubscriptions(info, null); // Remove the dialog if the subscription associated with this activity changes. if (info == null) { @@ -204,14 +204,16 @@ public class MobileNetworkActivity extends SettingsBaseActivity } @VisibleForTesting - void updateSubscriptions(SubscriptionInfo subscription) { + void updateSubscriptions(SubscriptionInfo subscription, Bundle savedInstanceState) { if (subscription == null) { return; } final int subscriptionIndex = subscription.getSubscriptionId(); updateTitleAndNavigation(subscription); - switchFragment(subscription); + if (savedInstanceState == null) { + switchFragment(subscription); + } mCurSubscriptionId = subscriptionIndex; mFragmentForceReload = false; From f74551eb47ada37c2327c6a596b0b0852de07a22 Mon Sep 17 00:00:00 2001 From: Zoey Chen Date: Thu, 4 Feb 2021 13:11:04 +0800 Subject: [PATCH 5/6] [Settings] Add owner into Settings/network Bug: None Test: Not required Change-Id: I7cc22c9455f4f074c1e22dd27e1f9cb4028376a8 --- src/com/android/settings/network/OWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/android/settings/network/OWNERS b/src/com/android/settings/network/OWNERS index 991ad43c534..4f17e3f5f90 100644 --- a/src/com/android/settings/network/OWNERS +++ b/src/com/android/settings/network/OWNERS @@ -6,5 +6,6 @@ goldmanj@google.com leechou@google.com songferngwang@google.com tomhsu@google.com +zoeychen@google.com # Emergency approvers in case the above are not available From 7a62ab1fff0928bd4ed8e83201e5de17df402130 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Tue, 2 Feb 2021 14:32:01 +0800 Subject: [PATCH 6/6] [Provider Model] Internet Panel - Airplane mode is on - Add "Airplane mode is on" to sub-title - Set the header layout to CENTER_HORIZONTAL if it's no icon - Hide "Settings" button - Screenshot https://screenshot.googleplex.com/6m5dFVZu7ar4nKW Bug: 178717651 Test: manual test atest InternetConnectivityPanelTest \ PanelFragmentTest \ ProviderModelSliceTest Change-Id: I899a817fd99415e9cad608aa4deac1e45365696a --- res/layout/panel_layout.xml | 5 +- .../settings/network/ProviderModelSlice.java | 14 +- .../panel/InternetConnectivityPanel.java | 59 +++++-- .../android/settings/panel/PanelFragment.java | 60 ++++---- .../panel/InternetConnectivityPanelTest.java | 83 ---------- .../network/ProviderModelSliceTest.java | 38 +++-- .../panel/InternetConnectivityPanelTest.java | 145 +++++++++++++++++- 7 files changed, 245 insertions(+), 159 deletions(-) delete mode 100644 tests/robotests/src/com/android/settings/panel/InternetConnectivityPanelTest.java diff --git a/res/layout/panel_layout.xml b/res/layout/panel_layout.xml index 5f33c32eb08..ac7a72b3268 100644 --- a/res/layout/panel_layout.xml +++ b/res/layout/panel_layout.xml @@ -48,11 +48,13 @@ + - + android:maxLines="1"/> diff --git a/src/com/android/settings/network/ProviderModelSlice.java b/src/com/android/settings/network/ProviderModelSlice.java index 288fe63e89e..24077ddbab7 100644 --- a/src/com/android/settings/network/ProviderModelSlice.java +++ b/src/com/android/settings/network/ProviderModelSlice.java @@ -26,7 +26,6 @@ import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.net.Uri; -import android.provider.Settings; import android.telephony.SubscriptionManager; import android.util.Log; @@ -87,9 +86,6 @@ public class ProviderModelSlice extends WifiSlice { final ListBuilder listBuilder = mHelper.createListBuilder(getUri()); if (mHelper.isAirplaneModeEnabled() && !mWifiManager.isWifiEnabled()) { log("Airplane mode is enabled."); - listBuilder.setHeader(mHelper.createHeader(Settings.ACTION_AIRPLANE_MODE_SETTINGS)); - listBuilder.addGridRow(mHelper.createMessageGridRow(R.string.condition_airplane_title, - Settings.ACTION_AIRPLANE_MODE_SETTINGS)); return listBuilder.build(); } @@ -195,10 +191,14 @@ public class ProviderModelSlice extends WifiSlice { MobileNetworkUtils.setMobileDataEnabled(mContext, defaultSubId, newState, false /* disableOtherSubscriptions */); } - doCarrierNetworkAction(isToggleAction, newState); + + final boolean isDataEnabled = + isToggleAction ? newState : MobileNetworkUtils.isMobileDataEnabled(mContext); + doCarrierNetworkAction(isToggleAction, isDataEnabled); } - private void doCarrierNetworkAction(boolean isToggleAction, boolean isDataEnabled) { + @VisibleForTesting + void doCarrierNetworkAction(boolean isToggleAction, boolean isDataEnabled) { final NetworkProviderWorker worker = getWorker(); if (worker == null) { return; @@ -209,7 +209,7 @@ public class ProviderModelSlice extends WifiSlice { return; } - if (MobileNetworkUtils.isMobileDataEnabled(mContext)) { + if (isDataEnabled) { worker.connectCarrierNetwork(); } } diff --git a/src/com/android/settings/panel/InternetConnectivityPanel.java b/src/com/android/settings/panel/InternetConnectivityPanel.java index 7bafe971eb1..c90d22b35de 100644 --- a/src/com/android/settings/panel/InternetConnectivityPanel.java +++ b/src/com/android/settings/panel/InternetConnectivityPanel.java @@ -19,6 +19,7 @@ package com.android.settings.panel; import static androidx.lifecycle.Lifecycle.Event.ON_PAUSE; import static androidx.lifecycle.Lifecycle.Event.ON_RESUME; +import static com.android.settings.network.InternetUpdater.INTERNET_APM; import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; import static com.android.settings.network.NetworkProviderSettings.ACTION_NETWORK_PROVIDER_SETTINGS; @@ -83,6 +84,9 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve mInternetUpdater.onPause(); } + /** + * @return a string for the title of the Panel. + */ @Override public CharSequence getTitle() { if (mIsProviderModelEnabled) { @@ -93,10 +97,21 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve return mContext.getText(R.string.internet_connectivity_panel_title); } + /** + * @return a string for the subtitle of the Panel. + */ + @Override + public CharSequence getSubTitle() { + if (mIsProviderModelEnabled && mInternetType == INTERNET_APM) { + return mContext.getText(R.string.condition_airplane_title); + } + return null; + } + @Override public List getSlices() { final List uris = new ArrayList<>(); - if (Utils.isProviderModelEnabled(mContext)) { + if (mIsProviderModelEnabled) { uris.add(CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI); uris.add(CustomSliceRegistry.AIRPLANE_SAFE_NETWORKS_SLICE_URI); } else { @@ -109,18 +124,21 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve @Override public Intent getSeeMoreIntent() { - return new Intent(Utils.isProviderModelEnabled(mContext) + return new Intent(mIsProviderModelEnabled ? ACTION_NETWORK_PROVIDER_SETTINGS : Settings.ACTION_WIRELESS_SETTINGS) .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } @Override public boolean isCustomizedButtonUsed() { - return Utils.isProviderModelEnabled(mContext); + return mIsProviderModelEnabled; } @Override public CharSequence getCustomizedButtonTitle() { + if (mInternetType == INTERNET_APM) { + return null; + } return mContext.getText(R.string.settings_button); } @@ -145,18 +163,35 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve * @param internetType the internet type */ public void onInternetTypeChanged(@InternetUpdater.InternetType int internetType) { - final boolean needRefresh = internetType != mInternetType - && (internetType == INTERNET_APM_NETWORKS - || mInternetType == INTERNET_APM_NETWORKS); - mInternetType = internetType; - if (needRefresh) { - refresh(); + if (internetType == mInternetType) { + return; } - } - private void refresh() { + final boolean changeToApm = (internetType == INTERNET_APM); + final boolean changeFromApm = (mInternetType == INTERNET_APM); + final boolean changeWithApmNetworks = + (internetType == INTERNET_APM_NETWORKS || mInternetType == INTERNET_APM_NETWORKS); + mInternetType = internetType; + if (mCallback != null) { - mCallback.onTitleChanged(); + if (changeToApm) { + // The internet type is changed to the airplane mode. + // Title: Internet + // Sub-Title: Airplane mode is on + // Settings button: Hide + mCallback.onHeaderChanged(); + mCallback.onCustomizedButtonStateChanged(); + } else if (changeFromApm) { + // The internet type is changed from the airplane mode. + // Title: Internet + // Settings button: Show + mCallback.onTitleChanged(); + mCallback.onCustomizedButtonStateChanged(); + } else if (changeWithApmNetworks) { + // The internet type is changed with the airplane mode networks. + // Title: Airplane mode networks / Internet + mCallback.onTitleChanged(); + } } } } diff --git a/src/com/android/settings/panel/PanelFragment.java b/src/com/android/settings/panel/PanelFragment.java index 503b34a7b91..e7c1bef1e02 100644 --- a/src/com/android/settings/panel/PanelFragment.java +++ b/src/com/android/settings/panel/PanelFragment.java @@ -26,6 +26,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.text.TextUtils; +import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -94,6 +95,7 @@ public class PanelFragment extends Fragment { private LinearLayout mPanelHeader; private ImageView mTitleIcon; private LinearLayout mTitleGroup; + private LinearLayout mHeaderLayout; private TextView mHeaderTitle; private TextView mHeaderSubtitle; private int mMaxHeight; @@ -202,6 +204,7 @@ public class PanelFragment extends Fragment { mPanelHeader = mLayoutView.findViewById(R.id.panel_header); mTitleIcon = mLayoutView.findViewById(R.id.title_icon); mTitleGroup = mLayoutView.findViewById(R.id.title_group); + mHeaderLayout = mLayoutView.findViewById(R.id.header_layout); mHeaderTitle = mLayoutView.findViewById(R.id.header_title); mHeaderSubtitle = mLayoutView.findViewById(R.id.header_subtitle); mFooterDivider = mLayoutView.findViewById(R.id.footer_divider); @@ -239,13 +242,12 @@ public class PanelFragment extends Fragment { final IconCompat icon = mPanel.getIcon(); final CharSequence title = mPanel.getTitle(); + final CharSequence subtitle = mPanel.getSubTitle(); - if (icon != null) { - enablePanelHeader(icon, title); + if (icon != null || (subtitle != null && subtitle.length() > 0)) { + enablePanelHeader(icon, title, subtitle); } else { - mTitleView.setVisibility(View.VISIBLE); - mPanelHeader.setVisibility(View.GONE); - mTitleView.setText(title); + enableTitle(title); } mFooterDivider.setVisibility(View.GONE); @@ -254,13 +256,7 @@ public class PanelFragment extends Fragment { mDoneButton.setOnClickListener(getCloseListener()); if (mPanel.isCustomizedButtonUsed()) { - final CharSequence customTitle = mPanel.getCustomizedButtonTitle(); - if (TextUtils.isEmpty(customTitle)) { - mSeeMoreButton.setVisibility(View.GONE); - } else { - mSeeMoreButton.setVisibility(View.VISIBLE); - mSeeMoreButton.setText(customTitle); - } + enableCustomizedButton(); } else if (mPanel.getSeeMoreIntent() == null) { // If getSeeMoreIntent() is null hide the mSeeMoreButton. mSeeMoreButton.setVisibility(View.GONE); @@ -275,14 +271,16 @@ public class PanelFragment extends Fragment { 0 /* value */); } - private void enablePanelHeader(IconCompat icon, CharSequence title) { + private void enablePanelHeader(IconCompat icon, CharSequence title, CharSequence subtitle) { mTitleView.setVisibility(View.GONE); mPanelHeader.setVisibility(View.VISIBLE); mPanelHeader.setAccessibilityPaneTitle(title); mHeaderTitle.setText(title); - mHeaderSubtitle.setText(mPanel.getSubTitle()); + mHeaderSubtitle.setText(subtitle); + mHeaderSubtitle.setAccessibilityPaneTitle(subtitle); if (icon != null) { mTitleGroup.setVisibility(View.VISIBLE); + mHeaderLayout.setGravity(Gravity.LEFT); mTitleIcon.setImageIcon(icon.toIcon(getContext())); if (mPanel.getHeaderIconIntent() != null) { mTitleIcon.setOnClickListener(getHeaderIconListener()); @@ -295,6 +293,24 @@ public class PanelFragment extends Fragment { } } else { mTitleGroup.setVisibility(View.GONE); + mHeaderLayout.setGravity(Gravity.CENTER_HORIZONTAL); + } + } + + private void enableTitle(CharSequence title) { + mPanelHeader.setVisibility(View.GONE); + mTitleView.setVisibility(View.VISIBLE); + mTitleView.setAccessibilityPaneTitle(title); + mTitleView.setText(title); + } + + private void enableCustomizedButton() { + final CharSequence customTitle = mPanel.getCustomizedButtonTitle(); + if (TextUtils.isEmpty(customTitle)) { + mSeeMoreButton.setVisibility(View.GONE); + } else { + mSeeMoreButton.setVisibility(View.VISIBLE); + mSeeMoreButton.setText(customTitle); } } @@ -487,24 +503,14 @@ public class PanelFragment extends Fragment { @Override public void onCustomizedButtonStateChanged() { ThreadUtils.postOnMainThread(() -> { - mSeeMoreButton.setVisibility( - mPanel.isCustomizedButtonUsed() ? View.VISIBLE : View.GONE); - mSeeMoreButton.setText(mPanel.getCustomizedButtonTitle()); + enableCustomizedButton(); }); } @Override public void onHeaderChanged() { ThreadUtils.postOnMainThread(() -> { - final IconCompat icon = mPanel.getIcon(); - if (icon != null) { - mTitleIcon.setImageIcon(icon.toIcon(getContext())); - mTitleGroup.setVisibility(View.VISIBLE); - } else { - mTitleGroup.setVisibility(View.GONE); - } - mHeaderTitle.setText(mPanel.getTitle()); - mHeaderSubtitle.setText(mPanel.getSubTitle()); + enablePanelHeader(mPanel.getIcon(), mPanel.getTitle(), mPanel.getSubTitle()); }); } @@ -517,7 +523,7 @@ public class PanelFragment extends Fragment { @Override public void onTitleChanged() { ThreadUtils.postOnMainThread(() -> { - mTitleView.setText(mPanel.getTitle()); + enableTitle(mPanel.getTitle()); }); } diff --git a/tests/robotests/src/com/android/settings/panel/InternetConnectivityPanelTest.java b/tests/robotests/src/com/android/settings/panel/InternetConnectivityPanelTest.java deleted file mode 100644 index eb82d31745e..00000000000 --- a/tests/robotests/src/com/android/settings/panel/InternetConnectivityPanelTest.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package com.android.settings.panel; - -import static com.google.common.truth.Truth.assertThat; - -import android.net.Uri; -import android.os.SystemProperties; - -import com.android.settings.network.AirplaneModePreferenceController; -import com.android.settings.slices.CustomSliceRegistry; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; - -import java.util.List; - -@RunWith(RobolectricTestRunner.class) - -public class InternetConnectivityPanelTest { - - private InternetConnectivityPanel mPanel; - private static final String SETTINGS_PROVIDER_MODEL = - "persist.sys.fflag.override.settings_provider_model"; - private boolean mSettingsProviderModelState; - - @Before - public void setUp() { - mPanel = InternetConnectivityPanel.create(RuntimeEnvironment.application); - mSettingsProviderModelState = SystemProperties.getBoolean(SETTINGS_PROVIDER_MODEL, false); - } - - @After - public void tearDown() { - SystemProperties.set(SETTINGS_PROVIDER_MODEL, - mSettingsProviderModelState ? "true" : "false"); - } - - @Test - public void getSlices_providerModelDisabled_containsNecessarySlices() { - SystemProperties.set(SETTINGS_PROVIDER_MODEL, "false"); - final List uris = mPanel.getSlices(); - - assertThat(uris).containsExactly( - AirplaneModePreferenceController.SLICE_URI, - CustomSliceRegistry.MOBILE_DATA_SLICE_URI, - CustomSliceRegistry.WIFI_SLICE_URI); - } - - @Test - public void getSlices_providerModelEnabled_containsNecessarySlices() { - SystemProperties.set(SETTINGS_PROVIDER_MODEL, "true"); - final List uris = mPanel.getSlices(); - - assertThat(uris).containsExactly( - CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI, - CustomSliceRegistry.AIRPLANE_SAFE_NETWORKS_SLICE_URI); - } - - @Test - public void getSeeMoreIntent_notNull() { - assertThat(mPanel.getSeeMoreIntent()).isNotNull(); - } -} diff --git a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java index 8f998a4925d..476d8547a71 100644 --- a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java +++ b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java @@ -16,8 +16,6 @@ package com.android.settings.network; -import static android.app.slice.Slice.EXTRA_TOGGLE_STATE; - import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; @@ -25,6 +23,7 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -387,35 +386,34 @@ public class ProviderModelSliceTest { } @Test - public void onNotifyChange_intentToggleActionOn_shouldSetCarrierNetworkEnabledTrue() { - when(mMockProviderModelSlice.defaultSubscriptionIsUsable(anyInt())).thenReturn(true); - Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent(); - intent.putExtra(EXTRA_TOGGLE_STATE, true); - - mMockProviderModelSlice.onNotifyChange(intent); + public void doCarrierNetworkAction_toggleActionSetDataEnabled_setCarrierNetworkEnabledTrue() { + mMockProviderModelSlice.doCarrierNetworkAction(true /* isToggleAction */, + true /* isDataEnabled */); verify(mMockNetworkProviderWorker).setCarrierNetworkEnabled(true); } @Test - public void onNotifyChange_intentToggleActionOff_shouldSetCarrierNetworkEnabledFalse() { - when(mMockProviderModelSlice.defaultSubscriptionIsUsable(anyInt())).thenReturn(true); - Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent(); - intent.putExtra(EXTRA_TOGGLE_STATE, false); - - mMockProviderModelSlice.onNotifyChange(intent); + public void doCarrierNetworkAction_toggleActionSetDataDisabled_setCarrierNetworkEnabledFalse() { + mMockProviderModelSlice.doCarrierNetworkAction(true /* isToggleAction */, + false /* isDataEnabled */); verify(mMockNetworkProviderWorker).setCarrierNetworkEnabled(false); } @Test - public void onNotifyChange_intentPrimaryAction_shouldConnectCarrierNetwork() { - when(mMockProviderModelSlice.defaultSubscriptionIsUsable(anyInt())).thenReturn(true); - when(mTelephonyManager.isDataEnabled()).thenReturn(true); - Intent intent = mMockProviderModelSlice.getBroadcastIntent(mContext).getIntent(); - - mMockProviderModelSlice.onNotifyChange(intent); + public void doCarrierNetworkAction_primaryActionAndDataEnabled_connectCarrierNetwork() { + mMockProviderModelSlice.doCarrierNetworkAction(false /* isToggleAction */, + true /* isDataEnabled */); verify(mMockNetworkProviderWorker).connectCarrierNetwork(); } + + @Test + public void doCarrierNetworkAction_primaryActionAndDataDisabled_notConnectCarrierNetwork() { + mMockProviderModelSlice.doCarrierNetworkAction(false /* isToggleAction */, + false /* isDataEnabled */); + + verify(mMockNetworkProviderWorker, never()).connectCarrierNetwork(); + } } diff --git a/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java b/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java index e8f694b78d8..a4d4ad1b916 100644 --- a/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java +++ b/tests/unit/src/com/android/settings/panel/InternetConnectivityPanelTest.java @@ -18,6 +18,9 @@ package com.android.settings.panel; import static com.android.settings.network.InternetUpdater.INTERNET_APM; import static com.android.settings.network.InternetUpdater.INTERNET_APM_NETWORKS; +import static com.android.settings.network.InternetUpdater.INTERNET_CELLULAR; +import static com.android.settings.network.InternetUpdater.INTERNET_ETHERNET; +import static com.android.settings.network.InternetUpdater.INTERNET_WIFI; import static com.google.common.truth.Truth.assertThat; @@ -26,10 +29,13 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import android.content.Context; +import android.net.Uri; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; +import com.android.settings.network.AirplaneModePreferenceController; +import com.android.settings.slices.CustomSliceRegistry; import com.android.settings.testutils.ResourcesUtils; import org.junit.Before; @@ -40,6 +46,8 @@ import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; +import java.util.List; + @RunWith(AndroidJUnit4.class) public class InternetConnectivityPanelTest { @@ -47,6 +55,10 @@ public class InternetConnectivityPanelTest { ApplicationProvider.getApplicationContext(), "provider_internet_settings"); public static final String TITLE_APM_NETWORKS = ResourcesUtils.getResourcesString( ApplicationProvider.getApplicationContext(), "airplane_mode_network_panel_title"); + public static final String SUBTITLE_APM_IS_ON = ResourcesUtils.getResourcesString( + ApplicationProvider.getApplicationContext(), "condition_airplane_title"); + public static final String BUTTON_SETTINGS = ResourcesUtils.getResourcesString( + ApplicationProvider.getApplicationContext(), "settings_button"); @Rule public final MockitoRule mMocks = MockitoJUnit.rule(); @@ -66,30 +78,147 @@ public class InternetConnectivityPanelTest { } @Test - public void getTitle_internetTypeChangedFromApmToApmNetworks_verifyTitleChanged() { + public void getTitle_internetApmNetworks_shouldBeApmNetworks() { + mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + + assertThat(mPanel.getTitle()).isEqualTo(TITLE_APM_NETWORKS); + } + + @Test + public void getTitle_notInternetApmNetworks_shouldBeInternet() { mPanel.onInternetTypeChanged(INTERNET_APM); assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); + mPanel.onInternetTypeChanged(INTERNET_WIFI); + + assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); + + mPanel.onInternetTypeChanged(INTERNET_CELLULAR); + + assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); + + mPanel.onInternetTypeChanged(INTERNET_ETHERNET); + + assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); + } + + @Test + public void getSubTitle_internetApm_shouldBeApmIsOn() { + mPanel.onInternetTypeChanged(INTERNET_APM); + + assertThat(mPanel.getSubTitle()).isEqualTo(SUBTITLE_APM_IS_ON); + } + + @Test + public void getSubTitle_notinternetApm_shouldBeNull() { + mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + + assertThat(mPanel.getSubTitle()).isNull(); + + mPanel.onInternetTypeChanged(INTERNET_WIFI); + + assertThat(mPanel.getSubTitle()).isNull(); + + mPanel.onInternetTypeChanged(INTERNET_CELLULAR); + + assertThat(mPanel.getSubTitle()).isNull(); + + mPanel.onInternetTypeChanged(INTERNET_ETHERNET); + + assertThat(mPanel.getSubTitle()).isNull(); + } + + @Test + public void getCustomizedButtonTitle_internetApm_shouldBeNull() { + mPanel.onInternetTypeChanged(INTERNET_APM); + + assertThat(mPanel.getCustomizedButtonTitle()).isNull(); + } + + @Test + public void getCustomizedButtonTitle_notInternetApm_shouldBeSettings() { + mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + + assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS); + + mPanel.onInternetTypeChanged(INTERNET_WIFI); + + assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS); + + mPanel.onInternetTypeChanged(INTERNET_CELLULAR); + + assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS); + + mPanel.onInternetTypeChanged(INTERNET_ETHERNET); + + assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_SETTINGS); + } + + @Test + public void getSlices_providerModelDisabled_containsNecessarySlices() { + mPanel.mIsProviderModelEnabled = false; + final List uris = mPanel.getSlices(); + + assertThat(uris).containsExactly( + AirplaneModePreferenceController.SLICE_URI, + CustomSliceRegistry.MOBILE_DATA_SLICE_URI, + CustomSliceRegistry.WIFI_SLICE_URI); + } + + @Test + public void getSlices_providerModelEnabled_containsNecessarySlices() { + final List uris = mPanel.getSlices(); + + assertThat(uris).containsExactly( + CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI, + CustomSliceRegistry.AIRPLANE_SAFE_NETWORKS_SLICE_URI); + } + + @Test + public void getSeeMoreIntent_notNull() { + assertThat(mPanel.getSeeMoreIntent()).isNotNull(); + } + + @Test + public void onInternetTypeChanged_internetTypeChangedToApm_changeHeaderAndHideSettings() { + mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + clearInvocations(mPanelContentCallback); + + mPanel.onInternetTypeChanged(INTERNET_APM); + + verify(mPanelContentCallback).onHeaderChanged(); + verify(mPanelContentCallback).onCustomizedButtonStateChanged(); + } + + @Test + public void onInternetTypeChanged_internetTypeChangedFomApm_changeTitleAndShowSettings() { + mPanel.onInternetTypeChanged(INTERNET_APM); + clearInvocations(mPanelContentCallback); + + mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); + + verify(mPanelContentCallback).onTitleChanged(); + verify(mPanelContentCallback).onCustomizedButtonStateChanged(); + } + + @Test + public void onInternetTypeChanged_internetTypeChangedToApmNetworks_changeTitle() { + mPanel.onInternetTypeChanged(INTERNET_WIFI); clearInvocations(mPanelContentCallback); mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); - assertThat(mPanel.getTitle()).isEqualTo(TITLE_APM_NETWORKS); verify(mPanelContentCallback).onTitleChanged(); } @Test - public void getTitle_internetTypeChangedFromApmNetworksToApm_verifyTitleChanged() { + public void onInternetTypeChanged_internetTypeChangedFromApmNetworks_changeTitle() { mPanel.onInternetTypeChanged(INTERNET_APM_NETWORKS); - - assertThat(mPanel.getTitle()).isEqualTo(TITLE_APM_NETWORKS); - clearInvocations(mPanelContentCallback); - mPanel.onInternetTypeChanged(INTERNET_APM); + mPanel.onInternetTypeChanged(INTERNET_WIFI); - assertThat(mPanel.getTitle()).isEqualTo(TITLE_INTERNET); verify(mPanelContentCallback).onTitleChanged(); } }