diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-08-10 04:00:48 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-08-10 04:00:48 +0000 |
commit | c15d2681da4bf09ec815d202878af8723ffeb87a (patch) | |
tree | 694ec9a77da23680b5c42485e9b137a364627383 | |
parent | 45fa81f8775bf134a86db73944f1f60bdce55c2c (diff) | |
parent | b24edc20ae50e9e5acbba75f64eecf146415be5b (diff) | |
download | telephony-android14-d1-s4-release.tar.gz |
Merge cherrypicks of ['googleplex-android-review.googlesource.com/24372401'] into udc-d1-release.android-14.0.0_r9android-14.0.0_r8android-14.0.0_r7android-14.0.0_r6android-14.0.0_r5android-14.0.0_r4android-14.0.0_r3android-14.0.0_r10android14-d1-s7-releaseandroid14-d1-s6-releaseandroid14-d1-s5-releaseandroid14-d1-s4-releaseandroid14-d1-s3-releaseandroid14-d1-s2-releaseandroid14-d1-s1-release
Change-Id: I1e9e0f7b5fdad67b002eb46052c9bd4631135643
-rw-r--r-- | src/java/com/android/internal/telephony/GsmCdmaPhone.java | 7 | ||||
-rw-r--r-- | tests/telephonytests/src/com/android/internal/telephony/GsmCdmaPhoneTest.java | 24 |
2 files changed, 26 insertions, 5 deletions
diff --git a/src/java/com/android/internal/telephony/GsmCdmaPhone.java b/src/java/com/android/internal/telephony/GsmCdmaPhone.java index 5eae06112c..cd0062ae7e 100644 --- a/src/java/com/android/internal/telephony/GsmCdmaPhone.java +++ b/src/java/com/android/internal/telephony/GsmCdmaPhone.java @@ -3521,13 +3521,14 @@ public class GsmCdmaPhone extends Phone { case EVENT_SET_NULL_CIPHER_AND_INTEGRITY_DONE: logd("EVENT_SET_NULL_CIPHER_AND_INTEGRITY_DONE"); ar = (AsyncResult) msg.obj; + // Only test for a success here in order to flip the support flag. + // Testing for the negative case, e.g. REQUEST_NOT_SUPPORTED, is insufficient + // because the modem or the RIL could still return exceptions for temporary + // failures even when the feature is unsupported. if (ar == null || ar.exception == null) { mIsNullCipherAndIntegritySupported = true; return; } - CommandException.Error error = ((CommandException) ar.exception).getCommandError(); - mIsNullCipherAndIntegritySupported = !error.equals( - CommandException.Error.REQUEST_NOT_SUPPORTED); break; case EVENT_IMS_DEREGISTRATION_TRIGGERED: diff --git a/tests/telephonytests/src/com/android/internal/telephony/GsmCdmaPhoneTest.java b/tests/telephonytests/src/com/android/internal/telephony/GsmCdmaPhoneTest.java index c5f20e39a4..465880aa7d 100644 --- a/tests/telephonytests/src/com/android/internal/telephony/GsmCdmaPhoneTest.java +++ b/tests/telephonytests/src/com/android/internal/telephony/GsmCdmaPhoneTest.java @@ -2211,7 +2211,6 @@ public class GsmCdmaPhoneTest extends TelephonyTest { verify(mMockCi, times(1)).setNullCipherAndIntegrityEnabled(anyBoolean(), any(Message.class)); - // Some ephemeral error occurred in the modem, but the feature was supported mPhoneUT.sendMessage(mPhoneUT.obtainMessage(EVENT_SET_NULL_CIPHER_AND_INTEGRITY_DONE, new AsyncResult(null, null, new CommandException(CommandException.Error.REQUEST_NOT_SUPPORTED)))); @@ -2220,6 +2219,28 @@ public class GsmCdmaPhoneTest extends TelephonyTest { } @Test + public void testHandleNullCipherAndIntegrityEnabled_radioUnavailable() { + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_CELLULAR_SECURITY, + TelephonyManager.PROPERTY_ENABLE_NULL_CIPHER_TOGGLE, Boolean.TRUE.toString(), + false); + mPhoneUT.mCi = mMockCi; + assertFalse(mPhoneUT.isNullCipherAndIntegritySupported()); + + mPhoneUT.sendMessage(mPhoneUT.obtainMessage(EVENT_RADIO_AVAILABLE, + new AsyncResult(null, new int[]{ServiceState.RIL_RADIO_TECHNOLOGY_GSM}, null))); + processAllMessages(); + + verify(mMockCi, times(1)).setNullCipherAndIntegrityEnabled(anyBoolean(), + any(Message.class)); + + mPhoneUT.sendMessage(mPhoneUT.obtainMessage(EVENT_SET_NULL_CIPHER_AND_INTEGRITY_DONE, + new AsyncResult(null, null, + new CommandException(CommandException.Error.RADIO_NOT_AVAILABLE)))); + processAllMessages(); + assertFalse(mPhoneUT.isNullCipherAndIntegritySupported()); + } + + @Test public void testHandleNullCipherAndIntegrityEnabled_radioSupportsFeature() { DeviceConfig.setProperty(DeviceConfig.NAMESPACE_CELLULAR_SECURITY, TelephonyManager.PROPERTY_ENABLE_NULL_CIPHER_TOGGLE, Boolean.TRUE.toString(), @@ -2234,7 +2255,6 @@ public class GsmCdmaPhoneTest extends TelephonyTest { verify(mMockCi, times(1)).setNullCipherAndIntegrityEnabled(anyBoolean(), any(Message.class)); - // Some ephemeral error occurred in the modem, but the feature was supported mPhoneUT.sendMessage(mPhoneUT.obtainMessage(EVENT_SET_NULL_CIPHER_AND_INTEGRITY_DONE, new AsyncResult(null, null, null))); processAllMessages(); |