diff --git a/res/values-night/themes_suw.xml b/res/values-night/themes_suw.xml
index dea7b1a5f78..527918b8083 100644
--- a/res/values-night/themes_suw.xml
+++ b/res/values-night/themes_suw.xml
@@ -21,6 +21,7 @@
+
diff --git a/res/values/themes_suw.xml b/res/values/themes_suw.xml
index 79adbd8a408..07232a3b1e4 100644
--- a/res/values/themes_suw.xml
+++ b/res/values/themes_suw.xml
@@ -133,6 +133,43 @@
- @style/LockPatternStyle
+
+
+
+
@@ -238,6 +275,7 @@
+
diff --git a/src/com/android/settings/SetupWizardUtils.java b/src/com/android/settings/SetupWizardUtils.java
index e0e9073a220..25e91598f3b 100644
--- a/src/com/android/settings/SetupWizardUtils.java
+++ b/src/com/android/settings/SetupWizardUtils.java
@@ -48,9 +48,9 @@ public class SetupWizardUtils {
if (WizardManagerHelper.isAnySetupWizard(intent)) {
if (ThemeHelper.isSetupWizardDayNightEnabled(context)) {
switch (theme) {
- // TODO(b/233032365): Create glif v4 theme for this case.
case ThemeHelper.THEME_GLIF_V4_LIGHT:
case ThemeHelper.THEME_GLIF_V4:
+ return R.style.GlifV4Theme_DayNight;
case ThemeHelper.THEME_GLIF_V3_LIGHT:
case ThemeHelper.THEME_GLIF_V3:
return R.style.GlifV3Theme_DayNight;
@@ -63,11 +63,12 @@ public class SetupWizardUtils {
}
} else {
switch (theme) {
- // TODO(b/233032365): Create glif v4 theme for this case.
case ThemeHelper.THEME_GLIF_V4_LIGHT:
+ return R.style.GlifV4Theme_Light;
+ case ThemeHelper.THEME_GLIF_V4:
+ return R.style.GlifV4Theme;
case ThemeHelper.THEME_GLIF_V3_LIGHT:
return R.style.GlifV3Theme_Light;
- case ThemeHelper.THEME_GLIF_V4:
case ThemeHelper.THEME_GLIF_V3:
return R.style.GlifV3Theme;
case ThemeHelper.THEME_GLIF_V2_LIGHT:
@@ -82,9 +83,9 @@ public class SetupWizardUtils {
}
} else {
switch (theme) {
- // TODO(b/233032365): Create glif v4 theme for this case.
case ThemeHelper.THEME_GLIF_V4_LIGHT:
case ThemeHelper.THEME_GLIF_V4:
+ return R.style.GlifV4Theme;
case ThemeHelper.THEME_GLIF_V3_LIGHT:
case ThemeHelper.THEME_GLIF_V3:
return R.style.GlifV3Theme;
diff --git a/src/com/android/settings/applications/appinfo/HibernationSwitchPreferenceController.java b/src/com/android/settings/applications/appinfo/HibernationSwitchPreferenceController.java
index f0b332904de..e3c577b189e 100644
--- a/src/com/android/settings/applications/appinfo/HibernationSwitchPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/HibernationSwitchPreferenceController.java
@@ -33,13 +33,9 @@ import android.content.Context;
import android.content.pm.PackageManager;
import android.permission.PermissionControllerManager;
import android.provider.DeviceConfig;
-import android.text.TextUtils;
import android.util.Slog;
import androidx.annotation.NonNull;
-import androidx.lifecycle.Lifecycle;
-import androidx.lifecycle.LifecycleObserver;
-import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.SwitchPreference;
@@ -49,8 +45,7 @@ import com.google.common.annotations.VisibleForTesting;
* A PreferenceController handling the logic for exempting hibernation of app
*/
public final class HibernationSwitchPreferenceController extends AppInfoPreferenceControllerBase
- implements LifecycleObserver, AppOpsManager.OnOpChangedListener,
- Preference.OnPreferenceChangeListener {
+ implements Preference.OnPreferenceChangeListener {
private static final String TAG = "HibernationSwitchPrefController";
private String mPackageName;
private final AppOpsManager mAppOpsManager;
@@ -69,19 +64,6 @@ public final class HibernationSwitchPreferenceController extends AppInfoPreferen
mPermissionControllerManager = context.getSystemService(PermissionControllerManager.class);
}
- @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
- public void onResume() {
- if (mIsPackageSet) {
- mAppOpsManager.startWatchingMode(
- OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, mPackageName, this);
- }
- }
-
- @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
- public void onPause() {
- mAppOpsManager.stopWatchingMode(this);
- }
-
@Override
public int getAvailabilityStatus() {
return isHibernationEnabled() && mIsPackageSet ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
@@ -148,14 +130,6 @@ public final class HibernationSwitchPreferenceController extends AppInfoPreferen
return mode == MODE_DEFAULT ? mIsPackageExemptByDefault : mode != MODE_ALLOWED;
}
- @Override
- public void onOpChanged(String op, String packageName) {
- if (OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED.equals(op)
- && TextUtils.equals(mPackageName, packageName)) {
- updateState(mPreference);
- }
- }
-
@Override
public boolean onPreferenceChange(Preference preference, Object isChecked) {
try {
diff --git a/src/com/android/settings/network/EnableMultiSimSidecar.java b/src/com/android/settings/network/EnableMultiSimSidecar.java
index aefd55f00e8..5545a69dd21 100644
--- a/src/com/android/settings/network/EnableMultiSimSidecar.java
+++ b/src/com/android/settings/network/EnableMultiSimSidecar.java
@@ -190,7 +190,8 @@ public class EnableMultiSimSidecar extends AsyncTaskSidecar {
Set activeRemovableLogicalSlotIds = new ArraySet<>();
for (UiccSlotInfo info : infos) {
for (UiccPortInfo portInfo :info.getPorts()) {
- if (info != null && portInfo.isActive() && info.isRemovable()) {
+ if (info != null && portInfo.isActive() && info.isRemovable()
+ && !info.getIsEuicc()) {
activeRemovableLogicalSlotIds.add(portInfo.getLogicalSlotIndex());
}
}
diff --git a/src/com/android/settings/network/UiccSlotUtil.java b/src/com/android/settings/network/UiccSlotUtil.java
index 813b9d6826d..4c8a7d5f999 100644
--- a/src/com/android/settings/network/UiccSlotUtil.java
+++ b/src/com/android/settings/network/UiccSlotUtil.java
@@ -193,7 +193,7 @@ public class UiccSlotUtil {
if (slotInfo == null) {
return false;
}
- return !slotInfo.isRemovable();
+ return slotInfo.getIsEuicc();
})
.findFirst().orElse(-1);
@@ -249,6 +249,7 @@ public class UiccSlotUtil {
if (slotId == INVALID_PHYSICAL_SLOT_ID) {
for (int i = 0; i < slots.length; i++) {
if (slots[i].isRemovable()
+ && !slots[i].getIsEuicc()
&& !slots[i].getPorts().stream().findFirst().get().isActive()
&& slots[i].getCardStateInfo() != UiccSlotInfo.CARD_STATE_INFO_ERROR
&& slots[i].getCardStateInfo() != UiccSlotInfo.CARD_STATE_INFO_RESTRICTED) {
diff --git a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java
index f5f18b4b9ee..f632a71119d 100644
--- a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java
+++ b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java
@@ -592,6 +592,7 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc
.anyMatch(
slot -> slot != null
&& slot.isRemovable()
+ && !slot.getIsEuicc()
&& slot.getPorts().stream().anyMatch(
port -> port.isActive())
&& slot.getCardStateInfo()
diff --git a/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java b/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java
index 4a6b96c1fa3..da3db8b1369 100644
--- a/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java
+++ b/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java
@@ -294,7 +294,7 @@ public class SimSlotChangeHandler {
return null;
}
for (UiccSlotInfo slotInfo : slotInfos) {
- if (slotInfo != null && slotInfo.isRemovable()) {
+ if (slotInfo != null && slotInfo.isRemovable() && !slotInfo.getIsEuicc()) {
return slotInfo;
}
}
diff --git a/tests/unit/src/com/android/settings/network/UiccSlotUtilTest.java b/tests/unit/src/com/android/settings/network/UiccSlotUtilTest.java
index 2cf984558be..5aa73eaa308 100644
--- a/tests/unit/src/com/android/settings/network/UiccSlotUtilTest.java
+++ b/tests/unit/src/com/android/settings/network/UiccSlotUtilTest.java
@@ -92,6 +92,14 @@ public class UiccSlotUtilTest {
assertThat(testSlot).isEqualTo(0);
}
+ @Test
+ public void getEsimSlotId_twoSimSlotsDeviceAndRemovableEsimIsSlot1_returnTheCorrectEsimSlot() {
+ when(mTelephonyManager.getUiccSlotsInfo()).thenReturn(
+ twoSimSlotsDeviceActivePsimActiveRemovableEsim());
+ int testSlot = UiccSlotUtil.getEsimSlotId(mContext);
+
+ assertThat(testSlot).isEqualTo(1);
+ }
@Test
public void getEsimSlotId_twoSimSlotsDeviceAndEsimIsSlot1_returnTheCorrectEsimSlot() {
@@ -729,6 +737,12 @@ public class UiccSlotUtilTest {
createUiccSlotInfo(true, false, 1, true)};
}
+ private UiccSlotInfo[] twoSimSlotsDeviceActivePsimActiveRemovableEsim() {
+ return new UiccSlotInfo[]{
+ createUiccSlotInfo(false, true, 0, true),
+ createUiccSlotInfo(true, true, 1, true)};
+ }
+
private UiccSlotInfo[] twoSimSlotsDeviceActiveEsimActivePsim() {
return new UiccSlotInfo[]{
createUiccSlotInfo(true, false, 0, true),