Merge "Import translations. DO NOT MERGE ANYWHERE" into 24D1-dev
diff --git a/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java b/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
index 8353861..105dbd5 100644
--- a/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
+++ b/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
@@ -567,6 +567,12 @@
// Clean up resources so that the new config data will be used when serving new requests
cleanupOnDeviceAccessControllerResources();
+
+ // Clean up cached data based on previous geofence data
+ synchronized (mLock) {
+ logd("clear mCachedAccessRestrictionMap");
+ mCachedAccessRestrictionMap.clear();
+ }
}
private void loadOverlayConfigs(@NonNull Context context) {
diff --git a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
index 18c03ac..29ad29e 100644
--- a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
+++ b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
@@ -215,6 +215,7 @@
private boolean mTryCsWhenPsFails;
private boolean mTryEsFallback;
private boolean mIsWaitingForDataDisconnection;
+ private boolean mSwitchRatPreferenceWithLocalNotRegistered;
private int mModemCount;
/** Indicates whether this instance is deactivated. */
@@ -445,7 +446,8 @@
}
if (mLastNetworkType == EUTRAN && mLastRegResult != null
- && mSelectionAttributes.getPsDisconnectCause() != null) {
+ && mSelectionAttributes.getPsDisconnectCause() != null
+ && !mSwitchRatPreferenceWithLocalNotRegistered) {
int regState = mLastRegResult.getRegState();
int reasonCode = mSelectionAttributes.getPsDisconnectCause().getCode();
if (reasonCode == ImsReasonInfo.CODE_LOCAL_NOT_REGISTERED
@@ -453,6 +455,7 @@
&& regState != REGISTRATION_STATE_ROAMING) {
// b/326292100, ePDN setup failed in limited state, request PS preferred scan.
mLastNetworkType = UNKNOWN;
+ mSwitchRatPreferenceWithLocalNotRegistered = true;
}
}
diff --git a/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java b/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java
index aabc0fb..8a29242 100644
--- a/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java
+++ b/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java
@@ -147,6 +147,9 @@
SharedPreferences mMockSharedPreferences;
@Mock
private SharedPreferences.Editor mMockSharedPreferencesEditor;
+ @Mock
+ private Map<SatelliteOnDeviceAccessController.LocationToken, Boolean>
+ mMockCachedAccessRestrictionMap;
private Looper mLooper;
private TestableLooper mTestableLooper;
@@ -497,6 +500,9 @@
assertSame(mConfigUpdateIntCaptor.getValue(), EVENT_CONFIG_DATA_UPDATED);
assertSame(mConfigUpdateObjectCaptor.getValue(), mMockContext);
+ replaceInstance(SatelliteAccessController.class, "mCachedAccessRestrictionMap",
+ mSatelliteAccessControllerUT, mMockCachedAccessRestrictionMap);
+
// These APIs are executed during loadRemoteConfigs
verify(mMockSharedPreferences, times(1)).getStringSet(anyString(), any());
verify(mMockSharedPreferences, times(1)).getBoolean(anyString(), anyBoolean());
@@ -509,6 +515,7 @@
sendConfigUpdateChangedEvent(mMockContext);
verify(mMockSharedPreferences, never()).edit();
+ verify(mMockCachedAccessRestrictionMap, never()).clear();
// satelliteConfig has invalid country codes
SatelliteConfig mockConfig = mock(SatelliteConfig.class);
@@ -518,6 +525,7 @@
sendConfigUpdateChangedEvent(mMockContext);
verify(mMockSharedPreferences, never()).edit();
+ verify(mMockCachedAccessRestrictionMap, never()).clear();
// satelliteConfig does not have is_allow_access_control data
doReturn(List.of(TEST_SATELLITE_COUNTRY_CODES))
@@ -526,6 +534,7 @@
sendConfigUpdateChangedEvent(mMockContext);
verify(mMockSharedPreferences, never()).edit();
+ verify(mMockCachedAccessRestrictionMap, never()).clear();
// satelliteConfig doesn't have S2CellFile
File mockFile = mock(File.class);
@@ -537,6 +546,7 @@
sendConfigUpdateChangedEvent(mMockContext);
verify(mMockSharedPreferences, never()).edit();
+ verify(mMockCachedAccessRestrictionMap, never()).clear();
// satelliteConfig has valid data
doReturn(mockConfig).when(mMockSatelliteController).getSatelliteConfig();
@@ -549,6 +559,7 @@
sendConfigUpdateChangedEvent(mMockContext);
verify(mMockSharedPreferences, times(2)).edit();
+ verify(mMockCachedAccessRestrictionMap, times(1)).clear();
}
private void sendConfigUpdateChangedEvent(Context context) {
diff --git a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
index fab7256..53f3b8a 100644
--- a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
+++ b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
@@ -2882,6 +2882,7 @@
@Test
public void testDefaultLimitedServiceEutranFail() throws Exception {
+ mResultConsumer = null;
createSelector(SLOT_0_SUB_ID);
unsolBarringInfoChanged(false);
@@ -2894,14 +2895,36 @@
bindImsServiceUnregistered();
- verifyPsDialed();
+ processAllMessages();
+ verify(mWwanSelectorCallback, times(1)).onDomainSelected(eq(DOMAIN_PS), eq(true));
attr = getSelectionAttributes(SLOT_0, SLOT_0_SUB_ID, false, regResult,
new ImsReasonInfo(ImsReasonInfo.CODE_LOCAL_NOT_REGISTERED, 0, null));
mDomainSelector.reselectDomain(attr);
processAllMessages();
- verifyScanPsPreferred();
+ // Verify PS preferred scan
+ verify(mWwanSelectorCallback, times(1)).onRequestEmergencyNetworkScan(
+ any(), eq(DomainSelectionService.SCAN_TYPE_NO_PREFERENCE),
+ anyBoolean(), any(), any());
+ assertEquals(EUTRAN, (int) mAccessNetwork.get(0));
+ assertNotNull(mResultConsumer);
+
+ regResult = getEmergencyRegResult(EUTRAN, REGISTRATION_STATE_UNKNOWN,
+ 0, false, false, 0, 0, "", "");
+ mResultConsumer.accept(regResult);
+
+ processAllMessages();
+ verify(mWwanSelectorCallback, times(2)).onDomainSelected(eq(DOMAIN_PS), eq(true));
+
+ mDomainSelector.reselectDomain(attr);
+ processAllMessages();
+
+ // Verify RAT preference change
+ verify(mWwanSelectorCallback, times(2)).onRequestEmergencyNetworkScan(
+ any(), eq(DomainSelectionService.SCAN_TYPE_NO_PREFERENCE),
+ anyBoolean(), any(), any());
+ assertEquals(UTRAN, (int) mAccessNetwork.get(0));
}
@Test