Loading flags/data.aconfig +0 −11 Original line number Diff line number Diff line package: "com.android.internal.telephony.flags" container: "system" # OWNER=linggm TARGET=25Q2 flag { name: "keep_ping_request" namespace: "telephony" description: "If ping test is not required to pass, keep the ping request to avoid deactivate followed by reactivate" bug: "366318732" metadata { purpose: PURPOSE_BUGFIX } } # OWNER=linggm TARGET=25Q2 flag { name: "auto_data_switch_enhanced" Loading src/java/com/android/internal/telephony/data/CellularNetworkValidator.java +2 −3 Original line number Diff line number Diff line Loading @@ -342,11 +342,10 @@ public class CellularNetworkValidator { if (mState == STATE_VALIDATING) { mValidationCallback.onValidationDone(passed, mSubId); mState = STATE_VALIDATED; boolean keepRequest = mFlags.keepPingRequest() ? (passed || !mRequireTestPass) : (!mRequireTestPass && passed); boolean keepRequest = passed || !mRequireTestPass; // If validation passed and per request to NOT release after validation, delay cleanup. if (keepRequest) { mHandler.postDelayed(this::stopValidation, 500); mHandler.postDelayed(this::stopValidation, 5000); } else { stopValidation(); } Loading src/java/com/android/internal/telephony/data/PhoneSwitcher.java +1 −1 Original line number Diff line number Diff line Loading @@ -1618,7 +1618,7 @@ public class PhoneSwitcher extends Handler { mSetOpptSubCallback = callback; long validationTimeout = getValidationTimeout(subIdToValidate, needValidation); mValidator.validate(subIdToValidate, validationTimeout, mFlags.keepPingRequest() && mPendingSwitchNeedValidation, mValidationCallback); mPendingSwitchNeedValidation, mValidationCallback); } private long getValidationTimeout(int subId, boolean needValidation) { Loading tests/telephonytests/src/com/android/internal/telephony/data/CellularNetworkValidatorTest.java +10 −3 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.internal.telephony.data; import static com.android.internal.telephony.TelephonyTestUtils.waitForMs; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; Loading Loading @@ -64,6 +62,7 @@ public class CellularNetworkValidatorTest extends TelephonyTest { new PhoneCapability(1, 1, null, true, new int[0]); private static final PhoneCapability CAPABILITY_WITHOUT_VALIDATION_SUPPORTED = new PhoneCapability(1, 1, null, false, new int[0]); private static final int CLEANUP_VALIDATION_TIMEOUT = 5010; private final CellIdentityLte mCellIdentityLte1 = new CellIdentityLte(123, 456, 0, 0, 111); private final CellIdentityLte mCellIdentityLte2 = new CellIdentityLte(321, 654, 0, 0, 222); Loading Loading @@ -226,7 +225,7 @@ public class CellularNetworkValidatorTest extends TelephonyTest { // Mark mValidationCacheTtl to only 1 second. setCacheTtlInCarrierConfig(1000); waitForMs(1100); moveTimeForward(1100); resetStates(); mValidatorUT.validate(subId, timeout, true, mCallback); Loading Loading @@ -309,6 +308,8 @@ public class CellularNetworkValidatorTest extends TelephonyTest { mValidatorUT.validate(1, timeout, true, mCallback); mValidatorUT.mNetworkCallback.onCapabilitiesChanged(null, new NetworkCapabilities() .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)); moveTimeForward(CLEANUP_VALIDATION_TIMEOUT); processAllMessages(); assertNetworkRecentlyValidated(1, true); // Change reg state to a different network. Loading Loading @@ -340,6 +341,9 @@ public class CellularNetworkValidatorTest extends TelephonyTest { mValidatorUT.validate(subId, timeout, true, mCallback); mValidatorUT.mNetworkCallback.onCapabilitiesChanged(null, new NetworkCapabilities() .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)); // release the request moveTimeForward(CLEANUP_VALIDATION_TIMEOUT); processAllMessages(); assertNetworkRecentlyValidated(subId, true); } Loading Loading @@ -457,6 +461,9 @@ public class CellularNetworkValidatorTest extends TelephonyTest { } private void assertValidationResult(int subId, boolean shouldPass) { // release the request moveTimeForward(CLEANUP_VALIDATION_TIMEOUT); processAllMessages(); // Verify that validation is over. verify(mConnectivityManager).unregisterNetworkCallback(eq(mValidatorUT.mNetworkCallback)); assertFalse(mValidatorUT.mHandler.hasMessagesOrCallbacks()); Loading tests/telephonytests/src/com/android/internal/telephony/data/PhoneSwitcherTest.java +7 −6 Original line number Diff line number Diff line Loading @@ -218,7 +218,7 @@ public class PhoneSwitcherTest extends TelephonyTest { processAllFutureMessages(); // Mock validation failed, expect retry attempt verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false), verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true), eq(mPhoneSwitcherUT.mValidationCallback)); mPhoneSwitcherUT.mValidationCallback.onValidationDone(false, 2/*Phone2*/); processAllMessages(); Loading @@ -227,6 +227,7 @@ public class PhoneSwitcherTest extends TelephonyTest { // Test clear failed count upon switch succeeded. mAutoDataSwitchCallback.onRequireValidation(1/*Phone2*/, true); moveTimeForward(5100); processAllFutureMessages(); mPhoneSwitcherUT.mValidationCallback.onValidationDone(true, 2/*Phone2*/); processAllMessages(); Loading Loading @@ -623,7 +624,7 @@ public class PhoneSwitcherTest extends TelephonyTest { // Set sub 2 as preferred sub should make phone 1 activated and phone 0 deactivated. mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, true, null); processAllMessages(); verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false), verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true), eq(mPhoneSwitcherUT.mValidationCallback)); // Validation failed. Preferred data sub should remain 1, data phone should remain 0. mPhoneSwitcherUT.mValidationCallback.onValidationDone(false, 2); Loading @@ -644,7 +645,7 @@ public class PhoneSwitcherTest extends TelephonyTest { mPhoneSwitcherUT.trySetOpportunisticDataSubscription( SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, true, null); processAllMessages(); verify(mCellularNetworkValidator).validate(eq(1), eq(timeout), eq(false), verify(mCellularNetworkValidator).validate(eq(1), eq(timeout), eq(true), eq(mPhoneSwitcherUT.mValidationCallback)); mPhoneSwitcherUT.mValidationCallback.onValidationDone(true, 1); processAllMessages(); Loading Loading @@ -874,7 +875,7 @@ public class PhoneSwitcherTest extends TelephonyTest { // verify the attempt to do auto data switch to Phone2(nDDS) processAllFutureMessages(); verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false), verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true), eq(mPhoneSwitcherUT.mValidationCallback)); // Phone2 has holding call on VoWifi, no need to switch data Loading Loading @@ -1258,7 +1259,7 @@ public class PhoneSwitcherTest extends TelephonyTest { clearInvocations(mCellularNetworkValidator); mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, true, mSetOpptDataCallback1); processAllMessages(); verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false), verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true), eq(mPhoneSwitcherUT.mValidationCallback)); doReturn(true).when(mCellularNetworkValidator).isValidating(); mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, true, mSetOpptDataCallback2); Loading @@ -1282,7 +1283,7 @@ public class PhoneSwitcherTest extends TelephonyTest { // Back to back call, call 1 to switch to subId 2, call 2 to switch back. mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, true, mSetOpptDataCallback1); processAllMessages(); verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false), verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true), eq(mPhoneSwitcherUT.mValidationCallback)); doReturn(true).when(mCellularNetworkValidator).isValidating(); mPhoneSwitcherUT.trySetOpportunisticDataSubscription( Loading Loading
flags/data.aconfig +0 −11 Original line number Diff line number Diff line package: "com.android.internal.telephony.flags" container: "system" # OWNER=linggm TARGET=25Q2 flag { name: "keep_ping_request" namespace: "telephony" description: "If ping test is not required to pass, keep the ping request to avoid deactivate followed by reactivate" bug: "366318732" metadata { purpose: PURPOSE_BUGFIX } } # OWNER=linggm TARGET=25Q2 flag { name: "auto_data_switch_enhanced" Loading
src/java/com/android/internal/telephony/data/CellularNetworkValidator.java +2 −3 Original line number Diff line number Diff line Loading @@ -342,11 +342,10 @@ public class CellularNetworkValidator { if (mState == STATE_VALIDATING) { mValidationCallback.onValidationDone(passed, mSubId); mState = STATE_VALIDATED; boolean keepRequest = mFlags.keepPingRequest() ? (passed || !mRequireTestPass) : (!mRequireTestPass && passed); boolean keepRequest = passed || !mRequireTestPass; // If validation passed and per request to NOT release after validation, delay cleanup. if (keepRequest) { mHandler.postDelayed(this::stopValidation, 500); mHandler.postDelayed(this::stopValidation, 5000); } else { stopValidation(); } Loading
src/java/com/android/internal/telephony/data/PhoneSwitcher.java +1 −1 Original line number Diff line number Diff line Loading @@ -1618,7 +1618,7 @@ public class PhoneSwitcher extends Handler { mSetOpptSubCallback = callback; long validationTimeout = getValidationTimeout(subIdToValidate, needValidation); mValidator.validate(subIdToValidate, validationTimeout, mFlags.keepPingRequest() && mPendingSwitchNeedValidation, mValidationCallback); mPendingSwitchNeedValidation, mValidationCallback); } private long getValidationTimeout(int subId, boolean needValidation) { Loading
tests/telephonytests/src/com/android/internal/telephony/data/CellularNetworkValidatorTest.java +10 −3 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.internal.telephony.data; import static com.android.internal.telephony.TelephonyTestUtils.waitForMs; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; Loading Loading @@ -64,6 +62,7 @@ public class CellularNetworkValidatorTest extends TelephonyTest { new PhoneCapability(1, 1, null, true, new int[0]); private static final PhoneCapability CAPABILITY_WITHOUT_VALIDATION_SUPPORTED = new PhoneCapability(1, 1, null, false, new int[0]); private static final int CLEANUP_VALIDATION_TIMEOUT = 5010; private final CellIdentityLte mCellIdentityLte1 = new CellIdentityLte(123, 456, 0, 0, 111); private final CellIdentityLte mCellIdentityLte2 = new CellIdentityLte(321, 654, 0, 0, 222); Loading Loading @@ -226,7 +225,7 @@ public class CellularNetworkValidatorTest extends TelephonyTest { // Mark mValidationCacheTtl to only 1 second. setCacheTtlInCarrierConfig(1000); waitForMs(1100); moveTimeForward(1100); resetStates(); mValidatorUT.validate(subId, timeout, true, mCallback); Loading Loading @@ -309,6 +308,8 @@ public class CellularNetworkValidatorTest extends TelephonyTest { mValidatorUT.validate(1, timeout, true, mCallback); mValidatorUT.mNetworkCallback.onCapabilitiesChanged(null, new NetworkCapabilities() .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)); moveTimeForward(CLEANUP_VALIDATION_TIMEOUT); processAllMessages(); assertNetworkRecentlyValidated(1, true); // Change reg state to a different network. Loading Loading @@ -340,6 +341,9 @@ public class CellularNetworkValidatorTest extends TelephonyTest { mValidatorUT.validate(subId, timeout, true, mCallback); mValidatorUT.mNetworkCallback.onCapabilitiesChanged(null, new NetworkCapabilities() .addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)); // release the request moveTimeForward(CLEANUP_VALIDATION_TIMEOUT); processAllMessages(); assertNetworkRecentlyValidated(subId, true); } Loading Loading @@ -457,6 +461,9 @@ public class CellularNetworkValidatorTest extends TelephonyTest { } private void assertValidationResult(int subId, boolean shouldPass) { // release the request moveTimeForward(CLEANUP_VALIDATION_TIMEOUT); processAllMessages(); // Verify that validation is over. verify(mConnectivityManager).unregisterNetworkCallback(eq(mValidatorUT.mNetworkCallback)); assertFalse(mValidatorUT.mHandler.hasMessagesOrCallbacks()); Loading
tests/telephonytests/src/com/android/internal/telephony/data/PhoneSwitcherTest.java +7 −6 Original line number Diff line number Diff line Loading @@ -218,7 +218,7 @@ public class PhoneSwitcherTest extends TelephonyTest { processAllFutureMessages(); // Mock validation failed, expect retry attempt verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false), verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true), eq(mPhoneSwitcherUT.mValidationCallback)); mPhoneSwitcherUT.mValidationCallback.onValidationDone(false, 2/*Phone2*/); processAllMessages(); Loading @@ -227,6 +227,7 @@ public class PhoneSwitcherTest extends TelephonyTest { // Test clear failed count upon switch succeeded. mAutoDataSwitchCallback.onRequireValidation(1/*Phone2*/, true); moveTimeForward(5100); processAllFutureMessages(); mPhoneSwitcherUT.mValidationCallback.onValidationDone(true, 2/*Phone2*/); processAllMessages(); Loading Loading @@ -623,7 +624,7 @@ public class PhoneSwitcherTest extends TelephonyTest { // Set sub 2 as preferred sub should make phone 1 activated and phone 0 deactivated. mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, true, null); processAllMessages(); verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false), verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true), eq(mPhoneSwitcherUT.mValidationCallback)); // Validation failed. Preferred data sub should remain 1, data phone should remain 0. mPhoneSwitcherUT.mValidationCallback.onValidationDone(false, 2); Loading @@ -644,7 +645,7 @@ public class PhoneSwitcherTest extends TelephonyTest { mPhoneSwitcherUT.trySetOpportunisticDataSubscription( SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, true, null); processAllMessages(); verify(mCellularNetworkValidator).validate(eq(1), eq(timeout), eq(false), verify(mCellularNetworkValidator).validate(eq(1), eq(timeout), eq(true), eq(mPhoneSwitcherUT.mValidationCallback)); mPhoneSwitcherUT.mValidationCallback.onValidationDone(true, 1); processAllMessages(); Loading Loading @@ -874,7 +875,7 @@ public class PhoneSwitcherTest extends TelephonyTest { // verify the attempt to do auto data switch to Phone2(nDDS) processAllFutureMessages(); verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false), verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true), eq(mPhoneSwitcherUT.mValidationCallback)); // Phone2 has holding call on VoWifi, no need to switch data Loading Loading @@ -1258,7 +1259,7 @@ public class PhoneSwitcherTest extends TelephonyTest { clearInvocations(mCellularNetworkValidator); mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, true, mSetOpptDataCallback1); processAllMessages(); verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false), verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true), eq(mPhoneSwitcherUT.mValidationCallback)); doReturn(true).when(mCellularNetworkValidator).isValidating(); mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, true, mSetOpptDataCallback2); Loading @@ -1282,7 +1283,7 @@ public class PhoneSwitcherTest extends TelephonyTest { // Back to back call, call 1 to switch to subId 2, call 2 to switch back. mPhoneSwitcherUT.trySetOpportunisticDataSubscription(2, true, mSetOpptDataCallback1); processAllMessages(); verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(false), verify(mCellularNetworkValidator).validate(eq(2), anyLong(), eq(true), eq(mPhoneSwitcherUT.mValidationCallback)); doReturn(true).when(mCellularNetworkValidator).isValidating(); mPhoneSwitcherUT.trySetOpportunisticDataSubscription( Loading