From b88bad678dd5ba64344d643866bf81a8813d5bfb Mon Sep 17 00:00:00 2001 From: Tetiana Meronyk Date: Tue, 4 Jul 2023 13:43:36 +0000 Subject: [PATCH] Fix "Allow guest to use telephony" toggle not updating its value Bug: 283004333 Test: atest GuestTelephonyPreferenceControllerTest Change-Id: I2f13a989bbe6a925c0e88350dbc215f6f188fe17 --- .../GuestTelephonyPreferenceController.java | 16 ++++++++-------- .../GuestTelephonyPreferenceControllerTest.java | 4 ++++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/users/GuestTelephonyPreferenceController.java b/src/com/android/settings/users/GuestTelephonyPreferenceController.java index 2aa808f4e5c..83e4bfc5310 100644 --- a/src/com/android/settings/users/GuestTelephonyPreferenceController.java +++ b/src/com/android/settings/users/GuestTelephonyPreferenceController.java @@ -34,14 +34,11 @@ public class GuestTelephonyPreferenceController extends TogglePreferenceControll private final UserManager mUserManager; private final UserCapabilities mUserCaps; - private Bundle mDefaultGuestRestrictions; public GuestTelephonyPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); mUserManager = context.getSystemService(UserManager.class); mUserCaps = UserCapabilities.create(context); - mDefaultGuestRestrictions = mUserManager.getDefaultGuestRestrictions(); - mDefaultGuestRestrictions.putBoolean(UserManager.DISALLOW_SMS, true); } @Override @@ -55,13 +52,16 @@ public class GuestTelephonyPreferenceController extends TogglePreferenceControll @Override public boolean isChecked() { - return !mDefaultGuestRestrictions.getBoolean(UserManager.DISALLOW_OUTGOING_CALLS, false); + return !mUserManager.getDefaultGuestRestrictions() + .getBoolean(UserManager.DISALLOW_OUTGOING_CALLS, false); } @Override public boolean setChecked(boolean isChecked) { - mDefaultGuestRestrictions.putBoolean(UserManager.DISALLOW_OUTGOING_CALLS, !isChecked); - mUserManager.setDefaultGuestRestrictions(mDefaultGuestRestrictions); + Bundle guestRestrictions = mUserManager.getDefaultGuestRestrictions(); + guestRestrictions.putBoolean(UserManager.DISALLOW_SMS, true); + guestRestrictions.putBoolean(UserManager.DISALLOW_OUTGOING_CALLS, !isChecked); + mUserManager.setDefaultGuestRestrictions(guestRestrictions); return true; } @@ -74,7 +74,7 @@ public class GuestTelephonyPreferenceController extends TogglePreferenceControll public void updateState(Preference preference) { super.updateState(preference); mUserCaps.updateAddUserCapabilities(mContext); - preference.setVisible(isAvailable() && mUserCaps.mUserSwitcherEnabled && mContext - .getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)); + preference.setVisible(isAvailable() && mUserCaps.mUserSwitcherEnabled + && mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)); } } diff --git a/tests/robotests/src/com/android/settings/users/GuestTelephonyPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/users/GuestTelephonyPreferenceControllerTest.java index aa84cb66576..c4b514cad13 100644 --- a/tests/robotests/src/com/android/settings/users/GuestTelephonyPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/users/GuestTelephonyPreferenceControllerTest.java @@ -18,12 +18,14 @@ package com.android.settings.users; import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assume.assumeTrue; import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; +import android.content.pm.PackageManager; import android.os.SystemProperties; import android.os.UserManager; @@ -103,6 +105,8 @@ public class GuestTelephonyPreferenceControllerTest { @Test public void updateState_Admin_shouldDisplayPreference() { + assumeTrue("Device does not have telephony feature ", + mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)); SystemProperties.set("fw.max_users", Long.toBinaryString(4)); mDpm.setDeviceOwner(null); mUserManager.setIsAdminUser(true);