Merge "Add Extra Exception Checks to Null Cipher Toggle"

This commit is contained in:
TreeHugger Robot
2023-01-06 21:49:22 +00:00
committed by Android (Google) Code Review
2 changed files with 44 additions and 2 deletions

View File

@@ -69,6 +69,12 @@ public class NullAlgorithmsPreferenceController extends TelephonyTogglePreferenc
} catch (UnsupportedOperationException e) {
Log.i(LOG_TAG, "Null cipher enablement is unsupported: " + e.getMessage());
return UNSUPPORTED_ON_DEVICE;
} catch (Exception e) {
Log.e(LOG_TAG,
"Failed isNullCipherAndIntegrityEnabled. Setting availability to "
+ "CONDITIONALLY_UNAVAILABLE. Exception: "
+ e.getMessage());
return CONDITIONALLY_UNAVAILABLE;
}
return AVAILABLE;
@@ -83,7 +89,16 @@ public class NullAlgorithmsPreferenceController extends TelephonyTogglePreferenc
*/
@Override
public boolean isChecked() {
return mTelephonyManager.isNullCipherAndIntegrityPreferenceEnabled();
try {
return mTelephonyManager.isNullCipherAndIntegrityPreferenceEnabled();
} catch (Exception e) {
Log.e(LOG_TAG,
"Failed isNullCipherAndIntegrityEnabled. Defaulting toggle to "
+ "checked = true. Exception: "
+ e.getMessage());
}
// The default behavior for this toggle is enabled
return true;
}
/**
@@ -105,7 +120,15 @@ public class NullAlgorithmsPreferenceController extends TelephonyTogglePreferenc
} else {
Log.i(LOG_TAG, "Disabling null algorithms");
}
mTelephonyManager.setNullCipherAndIntegrityEnabled(isChecked);
try {
mTelephonyManager.setNullCipherAndIntegrityEnabled(isChecked);
} catch (Exception e) {
Log.e(LOG_TAG,
"Failed setNullCipherAndIntegrityEnabled. Setting not updated. Exception: "
+ e.getMessage());
// The underlying setting was not updated
return false;
}
return true;
}
}

View File

@@ -21,6 +21,7 @@ import static com.android.settings.core.BasePreferenceController.UNSUPPORTED_ON_
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertFalse;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.spy;
@@ -119,6 +120,16 @@ public final class NullAlgorithmsPreferenceControllerTest {
assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
@Test
public void getAvailabilityStatus_telephonyManagerException_conditionallyUnavailable() {
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_CELLULAR_SECURITY,
TelephonyManager.PROPERTY_ENABLE_NULL_CIPHER_TOGGLE, Boolean.TRUE.toString(),
false);
doThrow(IllegalStateException.class).when(
mTelephonyManager).isNullCipherAndIntegrityPreferenceEnabled();
assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
@Test
public void getAvailabilityStatus_returnAvailable() {
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_CELLULAR_SECURITY,
@@ -141,4 +152,12 @@ public final class NullAlgorithmsPreferenceControllerTest {
mController.setChecked(false);
verify(mTelephonyManager, times(1)).setNullCipherAndIntegrityEnabled(false);
}
@Test
public void setChecked_exceptionThrown() {
doThrow(IllegalStateException.class).when(
mTelephonyManager).setNullCipherAndIntegrityEnabled(true);
assertFalse(mController.setChecked(true));
verify(mTelephonyManager, times(1)).setNullCipherAndIntegrityEnabled(true);
}
}