Merge "Return different disconnect reason and error strings for oem and carrier satellite" into 24D1-dev
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 4127de8..75385e7 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -538,7 +538,7 @@
<string name="incall_error_power_off" product="watch" msgid="7191184639454113633">"通話を発信するには、モバイル ネットワークを ON にし、機内モードまたはバッテリー セーバー モードを OFF にしてください。"</string>
<string name="incall_error_power_off" product="default" msgid="8131672264311208673">"電話をかけるには機内モードをオフにしてください。"</string>
<string name="incall_error_power_off_wfc" msgid="9125661184694727052">"電話をかけるには、機内モードをオフにするか無線ネットワークに接続してください。"</string>
- <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"スマートフォンが熱くなりすぎています"</b>\n\n"この通話を完了できません。スマートフォンの熱が冷めてから、もう一度お試しください。\n\n緊急通報は通常どおり発信できます。"</string>
+ <string name="incall_error_power_off_thermal" product="default" msgid="8695809601655300168"><b>"スマートフォンが熱くなっています"</b>\n\n"この通話を完了できません。スマートフォンの熱が冷めてから、もう一度お試しください。\n\n緊急通報は通常どおり発信できます。"</string>
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"緊急通報以外の通話を発信するには、緊急通報待機モードを終了してください。"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"ご加入の通信サービスがありません"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"モバイルネットワークが利用できません。"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index da89764..f373f5b 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -485,7 +485,7 @@
<string name="simContacts_title" msgid="2714029230160136647">"Contacten selecteren om te importeren"</string>
<string name="simContacts_airplaneMode" msgid="4654884030631503808">"Zet de vliegtuigmodus uit om contacten van de simkaart te importeren."</string>
<string name="enable_pin" msgid="967674051730845376">"SIM pincode aan-/uitzetten"</string>
- <string name="change_pin" msgid="3657869530942905790">"Pincode simkaart wijzigen"</string>
+ <string name="change_pin" msgid="3657869530942905790">"Pincode van simkaart wijzigen"</string>
<string name="enter_pin_text" msgid="3182311451978663356">"Pincode simkaart:"</string>
<string name="oldPinLabel" msgid="8618515202411987721">"Oude pincode"</string>
<string name="newPinLabel" msgid="3585899083055354732">"Nieuwe pincode"</string>
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index c382a44..4c8c836 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -13020,7 +13020,7 @@
}
if (isAllowed) {
mSatelliteController.requestSatelliteEnabled(
- subId, enableSatellite, enableDemoMode, callback);
+ subId, enableSatellite, enableDemoMode, isEmergency, callback);
} else {
result.accept(SATELLITE_RESULT_ACCESS_BARRED);
}
@@ -13031,7 +13031,7 @@
} else {
// No need to check if satellite is allowed at current location when disabling satellite
mSatelliteController.requestSatelliteEnabled(
- subId, enableSatellite, enableDemoMode, callback);
+ subId, enableSatellite, enableDemoMode, isEmergency, callback);
}
}
diff --git a/src/com/android/phone/satellite/entitlement/SatelliteEntitlementApi.java b/src/com/android/phone/satellite/entitlement/SatelliteEntitlementApi.java
index 45482ec..6c55709 100644
--- a/src/com/android/phone/satellite/entitlement/SatelliteEntitlementApi.java
+++ b/src/com/android/phone/satellite/entitlement/SatelliteEntitlementApi.java
@@ -61,7 +61,8 @@
SatelliteEntitlementResponse satelliteEntitlementResponse =
new SatelliteEntitlementResponse(response);
return new SatelliteEntitlementResult(satelliteEntitlementResponse.getEntitlementStatus(),
- satelliteEntitlementResponse.getPlmnAllowed());
+ satelliteEntitlementResponse.getPlmnAllowed(),
+ satelliteEntitlementResponse.getPlmnBarredList());
}
@NonNull
diff --git a/src/com/android/phone/satellite/entitlement/SatelliteEntitlementController.java b/src/com/android/phone/satellite/entitlement/SatelliteEntitlementController.java
index accae32..d193a7d 100644
--- a/src/com/android/phone/satellite/entitlement/SatelliteEntitlementController.java
+++ b/src/com/android/phone/satellite/entitlement/SatelliteEntitlementController.java
@@ -429,7 +429,8 @@
updateSatelliteEntitlementStatus(subId,
mSatelliteEntitlementResultPerSub.get(subId).getEntitlementStatus()
== SATELLITE_ENTITLEMENT_STATUS_ENABLED,
- mSatelliteEntitlementResultPerSub.get(subId).getAllowedPLMNList());
+ mSatelliteEntitlementResultPerSub.get(subId).getAllowedPLMNList(),
+ mSatelliteEntitlementResultPerSub.get(subId).getBarredPLMNList());
stopExponentialBackoff(subId);
mRetryCountPerSub.remove(subId);
}
@@ -528,9 +529,9 @@
*/
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
public void updateSatelliteEntitlementStatus(int subId, boolean enabled,
- List<String> plmnAllowedList) {
+ List<String> plmnAllowedList, List<String> plmnBarredList) {
SatelliteController.getInstance().onSatelliteEntitlementStatusUpdated(subId, enabled,
- plmnAllowedList, null);
+ plmnAllowedList, plmnBarredList, null);
}
private static void logd(String log) {
diff --git a/src/com/android/phone/satellite/entitlement/SatelliteEntitlementResponse.java b/src/com/android/phone/satellite/entitlement/SatelliteEntitlementResponse.java
index b877bee..97cb355 100644
--- a/src/com/android/phone/satellite/entitlement/SatelliteEntitlementResponse.java
+++ b/src/com/android/phone/satellite/entitlement/SatelliteEntitlementResponse.java
@@ -97,7 +97,6 @@
* Get the PLMNBarredList from the response
* @return The PLMNs Barred List
*/
- @VisibleForTesting
public List<String> getPlmnBarredList() {
return mPlmnBarredList.stream().map(String::new).collect(Collectors.toList());
}
@@ -137,7 +136,10 @@
mPlmnBarredList = new ArrayList<>();
JSONArray jsonArray = jsonToken.getJSONArray(PLMN_BARRED_KEY);
for (int i = 0; i < jsonArray.length(); i++) {
- mPlmnBarredList.add(jsonArray.getJSONObject(i).getString(PLMN_KEY));
+ String plmn = jsonArray.getJSONObject(i).getString(PLMN_KEY);
+ if (!TextUtils.isEmpty(plmn)) {
+ mPlmnBarredList.add(plmn);
+ }
}
}
} catch (JSONException e) {
diff --git a/src/com/android/phone/satellite/entitlement/SatelliteEntitlementResult.java b/src/com/android/phone/satellite/entitlement/SatelliteEntitlementResult.java
index 3289232..014e28e 100644
--- a/src/com/android/phone/satellite/entitlement/SatelliteEntitlementResult.java
+++ b/src/com/android/phone/satellite/entitlement/SatelliteEntitlementResult.java
@@ -53,17 +53,25 @@
* item of the satellite configuration received from the entitlement server.
*/
private List<SatelliteNetworkInfo> mAllowedSatelliteNetworkInfoList;
+ /**
+ * List consisting of the PLMN in the PLMNBarred item of the satellite configuration received
+ * from the entitlement server
+ */
+ private List<String> mBarredPlmnList;
/**
* Store the result of the satellite entitlement response.
*
* @param entitlementStatus The entitlement status.
* @param allowedSatelliteNetworkInfoList The allowedSatelliteNetworkInfoList
+ * @param barredPlmnList The barred plmn list
*/
public SatelliteEntitlementResult(@SatelliteEntitlementStatus int entitlementStatus,
- List<SatelliteNetworkInfo> allowedSatelliteNetworkInfoList) {
+ List<SatelliteNetworkInfo> allowedSatelliteNetworkInfoList,
+ List<String> barredPlmnList) {
mEntitlementStatus = entitlementStatus;
mAllowedSatelliteNetworkInfoList = allowedSatelliteNetworkInfoList;
+ mBarredPlmnList = barredPlmnList;
}
/**
@@ -86,6 +94,15 @@
}
/**
+ * Get the plmn barred list
+ *
+ * @return The plmn barred list.
+ */
+ public List<String> getBarredPLMNList() {
+ return mBarredPlmnList.stream().map(String::new).collect(Collectors.toList());
+ }
+
+ /**
* Get the default SatelliteEntitlementResult. EntitlementStatus set to
* `SATELLITE_ENTITLEMENT_STATUS_DISABLED` and SatelliteNetworkInfo list set to empty.
*
@@ -93,6 +110,6 @@
*/
public static SatelliteEntitlementResult getDefaultResult() {
return new SatelliteEntitlementResult(SATELLITE_ENTITLEMENT_STATUS_DISABLED,
- new ArrayList<>());
+ new ArrayList<>(), new ArrayList<>());
}
}
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index f656d21..e539bac 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -2811,6 +2811,25 @@
.findFirst().orElse(null);
}
+ /**
+ * Determines the phone with which emergency callback mode was set.
+ * @return The {@link Phone} with which emergency callback mode was set,
+ * or {@code null} if none was found.
+ */
+ @VisibleForTesting
+ public Phone getPhoneInEmergencyCallbackMode() {
+ if (!mDomainSelectionResolver.isDomainSelectionSupported()) {
+ // This is applicable for the AP domain selection service.
+ return null;
+ }
+ if (mEmergencyStateTracker == null) {
+ mEmergencyStateTracker = EmergencyStateTracker.getInstance();
+ }
+ return Stream.of(mPhoneFactoryProxy.getPhones())
+ .filter(p -> mEmergencyStateTracker.isInEcm(p))
+ .findFirst().orElse(null);
+ }
+
private boolean isVoiceInService(Phone phone, boolean imsVoiceCapable) {
// Dialing normal call is available.
if (phone.isWifiCallingEnabled()) {
@@ -3314,6 +3333,15 @@
return normalRoutingPhone;
}
+ if (mDomainSelectionResolver.isDomainSelectionSupported()) {
+ Phone phoneInEcm = getPhoneInEmergencyCallbackMode();
+ if (phoneInEcm != null) {
+ Log.i(this, "getPhoneForAccount: in ECBM, using phoneId=%d/subId=%d",
+ phoneInEcm.getPhoneId(), phoneInEcm.getSubId());
+ return phoneInEcm;
+ }
+ }
+
// Default emergency call phone selection logic:
// This is an emergency call and the phone we originally planned to make this call
// with is not in service or was invalid, try to find one that is in service, using the
diff --git a/testapps/TestSatelliteApp/res/layout/activity_SatelliteControl.xml b/testapps/TestSatelliteApp/res/layout/activity_SatelliteControl.xml
index 6a79412..6aec1da 100644
--- a/testapps/TestSatelliteApp/res/layout/activity_SatelliteControl.xml
+++ b/testapps/TestSatelliteApp/res/layout/activity_SatelliteControl.xml
@@ -119,6 +119,12 @@
android:layout_height="wrap_content"
android:paddingRight="4dp"
android:text="@string/isRequestIsSatelliteEnabledForCarrier"/>
+ <Button
+ android:id="@+id/getIsEmergency"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingRight="4dp"
+ android:text="@string/getIsEmergency"/>
<Button
android:id="@+id/Back"
android:onClick="Back"
diff --git a/testapps/TestSatelliteApp/res/values/donottranslate_strings.xml b/testapps/TestSatelliteApp/res/values/donottranslate_strings.xml
index 20f5ca8..8ddfee1 100644
--- a/testapps/TestSatelliteApp/res/values/donottranslate_strings.xml
+++ b/testapps/TestSatelliteApp/res/values/donottranslate_strings.xml
@@ -30,6 +30,7 @@
<string name="requestSatelliteCapabilities">requestSatelliteCapabilities</string>
<string name="requestIsSatelliteCommunicationAllowedForCurrentLocation">requestIsSatelliteCommunicationAllowedForCurrentLocation</string>
<string name="requestTimeForNextSatelliteVisibility">requestTimeForNextSatelliteVisibility</string>
+ <string name="getIsEmergency">getIsEmergency</string>
<string name="pollPendingSatelliteDatagrams">pollPendingSatelliteDatagrams</string>
<string name="sendSatelliteDatagram">sendSatelliteDatagram</string>
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteControl.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteControl.java
index dd7b825..a03f04e 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteControl.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteControl.java
@@ -81,6 +81,8 @@
.setOnClickListener(this::isSatelliteEnabledForCarrierApp);
findViewById(R.id.isRequestIsSatelliteEnabledForCarrier)
.setOnClickListener(this::isRequestIsSatelliteEnabledForCarrierApp);
+ findViewById(R.id.getIsEmergency)
+ .setOnClickListener(this::getIsEmergencyApp);
findViewById(R.id.Back).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
@@ -92,8 +94,8 @@
private void enableSatelliteApp(View view) {
LinkedBlockingQueue<Integer> error = new LinkedBlockingQueue<>(1);
mSatelliteManager.requestEnabled(
- new EnableRequestAttributes.Builder(true).setDemoMode(true).build(),
- Runnable::run, error::offer);
+ new EnableRequestAttributes.Builder(true).setDemoMode(true).setEmergencyMode(true)
+ .build(), Runnable::run, error::offer);
TextView textView = findViewById(R.id.text_id);
try {
Integer value = error.poll(TIMEOUT, TimeUnit.MILLISECONDS);
@@ -374,4 +376,11 @@
+ SatelliteTestApp.getTestSatelliteService()
.isRequestIsSatelliteEnabledForCarrier());
}
+
+ private void getIsEmergencyApp(View view) {
+ TextView textView = findViewById(R.id.text_id);
+ textView.setText("[SatelliteService] getIsEmergencyApp= "
+ + SatelliteTestApp.getTestSatelliteService()
+ .getIsEmergency());
+ }
}
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteService.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteService.java
index ed9fa10..afa20bc 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteService.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteService.java
@@ -100,6 +100,7 @@
private List<String> mAllPlmnList = new ArrayList<>();
private boolean mIsSatelliteEnabledForCarrier;
private boolean mIsRequestIsSatelliteEnabledForCarrier;
+ private boolean mIsEmergnecy;
/**
* Create TestSatelliteService using the Executor specified for methods being called from
@@ -117,6 +118,7 @@
mIsCellularModemEnabledMode = false;
mIsSatelliteEnabledForCarrier = false;
mIsRequestIsSatelliteEnabledForCarrier = false;
+ mIsEmergnecy = false;
}
/**
@@ -184,8 +186,9 @@
@Override
public void requestSatelliteEnabled(boolean enableSatellite, boolean enableDemoMode,
- @NonNull IIntegerConsumer errorCallback) {
- logd("requestSatelliteEnabled: mErrorCode=" + mErrorCode + " enable = " + enableSatellite);
+ boolean isEmergency, @NonNull IIntegerConsumer errorCallback) {
+ logd("requestSatelliteEnabled: mErrorCode=" + mErrorCode + " enable = " + enableSatellite
+ + " isEmergency=" + isEmergency);
if (mErrorCode != SatelliteResult.SATELLITE_RESULT_SUCCESS) {
runWithExecutor(() -> errorCallback.accept(mErrorCode));
return;
@@ -196,6 +199,7 @@
} else {
disableSatellite(errorCallback);
}
+ mIsEmergnecy = isEmergency;
}
private void enableSatellite(@NonNull IIntegerConsumer errorCallback) {
@@ -565,6 +569,10 @@
return mIsRequestIsSatelliteEnabledForCarrier;
}
+ public boolean getIsEmergency() {
+ return mIsEmergnecy;
+ }
+
/**
* Log the message to the radio buffer with {@code DEBUG} priority.
*
diff --git a/tests/src/com/android/phone/satellite/entitlement/SatelliteEntitlementControllerTest.java b/tests/src/com/android/phone/satellite/entitlement/SatelliteEntitlementControllerTest.java
index 18a0284..dd9ea65 100644
--- a/tests/src/com/android/phone/satellite/entitlement/SatelliteEntitlementControllerTest.java
+++ b/tests/src/com/android/phone/satellite/entitlement/SatelliteEntitlementControllerTest.java
@@ -79,6 +79,7 @@
private static final int[] ACTIVE_SUB_ID = {SUB_ID};
private static final int DEFAULT_QUERY_REFRESH_DAY = 30;
private static final List<String> PLMN_ALLOWED_LIST = Arrays.asList("31026", "302820");
+ private static final List<String> PLMN_BARRED_LIST = Arrays.asList("12345", "98765");
@Mock
CarrierConfigManager mCarrierConfigManager;
@Mock
@@ -166,7 +167,7 @@
verify(mSatelliteEntitlementApi, never()).checkEntitlementStatus();
verify(mSatelliteController, never()).onSatelliteEntitlementStatusUpdated(anyInt(),
- anyBoolean(), anyList(), any());
+ anyBoolean(), anyList(), anyList(), any());
mCarrierConfigBundle.putBoolean(
CarrierConfigManager.KEY_SATELLITE_ENTITLEMENT_SUPPORTED_BOOL, true);
@@ -177,7 +178,7 @@
verify(mSatelliteEntitlementApi, never()).checkEntitlementStatus();
verify(mSatelliteController, never()).onSatelliteEntitlementStatusUpdated(anyInt(),
- anyBoolean(), anyList(), any());
+ anyBoolean(), anyList(), anyList(), any());
replaceInstance(SatelliteEntitlementController.class, "mExponentialBackoffPerSub",
mSatelliteEntitlementController, new HashMap<>());
@@ -188,7 +189,7 @@
verify(mSatelliteEntitlementApi, never()).checkEntitlementStatus();
verify(mSatelliteController, never()).onSatelliteEntitlementStatusUpdated(anyInt(),
- anyBoolean(), anyList(), any());
+ anyBoolean(), anyList(), anyList(), any());
setInternetConnected(true);
// Verify don't start the query when last query refresh time is not expired.
@@ -197,18 +198,19 @@
verify(mSatelliteEntitlementApi, never()).checkEntitlementStatus();
verify(mSatelliteController, never()).onSatelliteEntitlementStatusUpdated(anyInt(),
- anyBoolean(), anyList(), any());
+ anyBoolean(), anyList(), anyList(), any());
// Verify start the query when isQueryAvailable return true
setLastQueryTime(0L);
doReturn(mSatelliteEntitlementResult).when(
mSatelliteEntitlementApi).checkEntitlementStatus();
- setSatelliteEntitlementResult(SATELLITE_ENTITLEMENT_STATUS_ENABLED, PLMN_ALLOWED_LIST);
+ setSatelliteEntitlementResult(SATELLITE_ENTITLEMENT_STATUS_ENABLED, PLMN_ALLOWED_LIST,
+ PLMN_BARRED_LIST);
mSatelliteEntitlementController.handleCmdStartQueryEntitlement();
verify(mSatelliteEntitlementApi).checkEntitlementStatus();
verify(mSatelliteController).onSatelliteEntitlementStatusUpdated(anyInt(),
- anyBoolean(), anyList(), any());
+ anyBoolean(), anyList(), anyList(), any());
}
@Test
@@ -221,7 +223,7 @@
verify(mSatelliteEntitlementApi, never()).checkEntitlementStatus();
// Verify don't call the updateSatelliteEntitlementStatus.
verify(mSatelliteController, never()).onSatelliteEntitlementStatusUpdated(anyInt(),
- anyBoolean(), anyList(), any());
+ anyBoolean(), anyList(), anyList(), any());
// Verify call the checkSatelliteEntitlementStatus with invalid response.
setIsQueryAvailableTrue();
@@ -234,26 +236,27 @@
verify(mSatelliteEntitlementApi).checkEntitlementStatus();
// Verify call the updateSatelliteEntitlementStatus with satellite service is disabled
- // and empty PLMNAllowed
+ // , empty PLMNAllowed and empty PLMNBarred.
verify(mSatelliteController).onSatelliteEntitlementStatusUpdated(eq(SUB_ID),
- eq(false), eq(new ArrayList<>()), any());
+ eq(false), eq(new ArrayList<>()), eq(new ArrayList<>()), any());
// Verify call the checkSatelliteEntitlementStatus with the subscribed result.
clearInvocationsForMock();
setIsQueryAvailableTrue();
doReturn(mSatelliteEntitlementResult).when(
mSatelliteEntitlementApi).checkEntitlementStatus();
- setSatelliteEntitlementResult(SATELLITE_ENTITLEMENT_STATUS_ENABLED, PLMN_ALLOWED_LIST);
+ setSatelliteEntitlementResult(SATELLITE_ENTITLEMENT_STATUS_ENABLED, PLMN_ALLOWED_LIST,
+ PLMN_BARRED_LIST);
mSatelliteEntitlementController.handleCmdStartQueryEntitlement();
verify(mSatelliteEntitlementApi).checkEntitlementStatus();
- // Verify call the updateSatelliteEntitlementStatus with satellite service is enable and
- // availablePLMNAllowedList
+ // Verify call the updateSatelliteEntitlementStatus with satellite service is enable,
+ // availablePLMNAllowedList and availablePLMNBarredList.
verify(mSatelliteController).onSatelliteEntitlementStatusUpdated(eq(SUB_ID), eq(true),
- eq(PLMN_ALLOWED_LIST), any());
+ eq(PLMN_ALLOWED_LIST), eq(PLMN_BARRED_LIST), any());
- // Change subId and verify call the updateSatelliteEntitlementStatus with satellite
- // service is enable and availablePLMNAllowedList
+ // Change subId and verify call the updateSatelliteEntitlementStatus with satellite
+ // service is enable, availablePLMNAllowedList and availablePLMNBarredList
clearInvocationsForMock();
doReturn(new int[]{SUB_ID_2}).when(mMockSubscriptionManagerService).getActiveSubIdList(
true);
@@ -261,7 +264,43 @@
verify(mSatelliteEntitlementApi).checkEntitlementStatus();
verify(mSatelliteController).onSatelliteEntitlementStatusUpdated(eq(SUB_ID_2), eq(true),
- eq(PLMN_ALLOWED_LIST), any());
+ eq(PLMN_ALLOWED_LIST), eq(PLMN_BARRED_LIST), any());
+
+ // Verify call the updateSatelliteEntitlementStatus with satellite service is enable,
+ // availablePLMNAllowedList and empty plmn barred list.
+ clearInvocationsForMock();
+ setIsQueryAvailableTrue();
+ setSatelliteEntitlementResult(SATELLITE_ENTITLEMENT_STATUS_ENABLED, PLMN_ALLOWED_LIST,
+ new ArrayList<>());
+ mSatelliteEntitlementController.handleCmdStartQueryEntitlement();
+
+ verify(mSatelliteEntitlementApi).checkEntitlementStatus();
+ verify(mSatelliteController).onSatelliteEntitlementStatusUpdated(eq(SUB_ID), eq(true),
+ eq(PLMN_ALLOWED_LIST), eq(new ArrayList<>()), any());
+
+ // Verify call the updateSatelliteEntitlementStatus with satellite service is enable,
+ // empty PLMNAllowedList and PLMNBarredList.
+ clearInvocationsForMock();
+ setIsQueryAvailableTrue();
+ setSatelliteEntitlementResult(SATELLITE_ENTITLEMENT_STATUS_ENABLED, new ArrayList<>(),
+ new ArrayList<>());
+ mSatelliteEntitlementController.handleCmdStartQueryEntitlement();
+
+ verify(mSatelliteEntitlementApi).checkEntitlementStatus();
+ verify(mSatelliteController).onSatelliteEntitlementStatusUpdated(eq(SUB_ID), eq(true),
+ eq(new ArrayList<>()), eq(new ArrayList<>()), any());
+
+ // Verify call the updateSatelliteEntitlementStatus with satellite service is enable,
+ // empty PLMNAllowedList and availablePLMNBarredList.
+ clearInvocationsForMock();
+ setIsQueryAvailableTrue();
+ setSatelliteEntitlementResult(SATELLITE_ENTITLEMENT_STATUS_ENABLED, new ArrayList<>(),
+ PLMN_BARRED_LIST);
+ mSatelliteEntitlementController.handleCmdStartQueryEntitlement();
+
+ verify(mSatelliteEntitlementApi).checkEntitlementStatus();
+ verify(mSatelliteController).onSatelliteEntitlementStatusUpdated(eq(SUB_ID), eq(true),
+ eq(new ArrayList<>()), eq(PLMN_BARRED_LIST), any());
}
@Test
@@ -277,7 +316,8 @@
// Verify the called the checkSatelliteEntitlementStatus when Internet is connected.
setInternetConnected(true);
setLastQueryTime(0L);
- setSatelliteEntitlementResult(SATELLITE_ENTITLEMENT_STATUS_ENABLED, PLMN_ALLOWED_LIST);
+ setSatelliteEntitlementResult(SATELLITE_ENTITLEMENT_STATUS_ENABLED, PLMN_ALLOWED_LIST,
+ PLMN_BARRED_LIST);
networkCallback.onAvailable(mockNetwork);
mTestableLooper.processAllMessages();
@@ -285,7 +325,7 @@
verify(mSatelliteEntitlementApi).checkEntitlementStatus();
// Verify call the updateSatelliteEntitlementStatus with satellite service is available.
verify(mSatelliteController).onSatelliteEntitlementStatusUpdated(eq(SUB_ID), eq(true),
- eq(PLMN_ALLOWED_LIST), any());
+ eq(PLMN_ALLOWED_LIST), eq(PLMN_BARRED_LIST), any());
}
@Test
@@ -294,13 +334,14 @@
// occurred and Internet is connected.
setInternetConnected(true);
setLastQueryTime(0L);
- setSatelliteEntitlementResult(SATELLITE_ENTITLEMENT_STATUS_ENABLED, PLMN_ALLOWED_LIST);
+ setSatelliteEntitlementResult(SATELLITE_ENTITLEMENT_STATUS_ENABLED, PLMN_ALLOWED_LIST,
+ PLMN_BARRED_LIST);
triggerCarrierConfigChanged();
verify(mSatelliteEntitlementApi).checkEntitlementStatus();
// Verify call the updateSatelliteEntitlementStatus with satellite service is available.
verify(mSatelliteController).onSatelliteEntitlementStatusUpdated(eq(SUB_ID), eq(true),
- eq(PLMN_ALLOWED_LIST), any());
+ eq(PLMN_ALLOWED_LIST), eq(PLMN_BARRED_LIST), any());
}
private void triggerCarrierConfigChanged() {
@@ -344,9 +385,10 @@
}
private void setSatelliteEntitlementResult(int entitlementStatus,
- List<String> plmnAllowedList) {
+ List<String> plmnAllowedList, List<String> plmnBarredList) {
doReturn(entitlementStatus).when(mSatelliteEntitlementResult).getEntitlementStatus();
doReturn(plmnAllowedList).when(mSatelliteEntitlementResult).getAllowedPLMNList();
+ doReturn(plmnBarredList).when(mSatelliteEntitlementResult).getBarredPLMNList();
}
private void setLastQueryTime(Long lastQueryTime) throws Exception {
diff --git a/tests/src/com/android/phone/satellite/entitlement/SatelliteEntitlementResponseTest.java b/tests/src/com/android/phone/satellite/entitlement/SatelliteEntitlementResponseTest.java
index 13d43c8..8e45a73 100644
--- a/tests/src/com/android/phone/satellite/entitlement/SatelliteEntitlementResponseTest.java
+++ b/tests/src/com/android/phone/satellite/entitlement/SatelliteEntitlementResponseTest.java
@@ -136,27 +136,55 @@
assertTrue(response.getPlmnBarredList().size() == 2);
assertEquals(TEST_PLMN_BARRED_LIST, response.getPlmnBarredList());
+ // Received the body without plmn barred key.
+ response = new SatelliteEntitlementResponse(
+ getChangedAllowedPLMNListResponse(TEST_PLMN_DATA_PLAN_TYPE_LIST.get(0).mPlmn,
+ TEST_PLMN_DATA_PLAN_TYPE_LIST.get(1).mPlmn));
+ assertEquals(SATELLITE_ENTITLEMENT_STATUS_ENABLED, response.getEntitlementStatus());
+ assertTrue(response.getPlmnAllowed().size() == 2);
+ assertTrue(response.getPlmnBarredList().size() == 0);
+
String plmn = "123456";
- // Received 123456 and empty string list
+ // Received the allowed plmn list set as 123456, empty string
response = new SatelliteEntitlementResponse(
- getChangedPLMNListResponse(plmn, ""));
+ getChangedAllowedPLMNListResponse(plmn, ""));
assertEquals(SATELLITE_ENTITLEMENT_STATUS_ENABLED, response.getEntitlementStatus());
assertTrue(response.getPlmnAllowed().size() == 1);
assertEquals(plmn, response.getPlmnAllowed().get(0).mPlmn);
- // Received empty string and 123456 list
+ // Received the allowed plmn list set as 123456, empty string
response = new SatelliteEntitlementResponse(
- getChangedPLMNListResponse("", plmn));
+ getChangedAllowedPLMNListResponse("", plmn));
assertEquals(SATELLITE_ENTITLEMENT_STATUS_ENABLED, response.getEntitlementStatus());
assertTrue(response.getPlmnAllowed().size() == 1);
assertEquals(plmn, response.getPlmnAllowed().get(0).mPlmn);
- // Received all empty strings list
+ // RReceived the allowed plmn list set as empty strings
response = new SatelliteEntitlementResponse(
- getChangedPLMNListResponse("", ""));
+ getChangedAllowedPLMNListResponse("", ""));
assertEquals(SATELLITE_ENTITLEMENT_STATUS_ENABLED, response.getEntitlementStatus());
assertTrue(response.getPlmnAllowed().size() == 0);
+ // Received the barred plmn list set as 123456, empty string
+ response = new SatelliteEntitlementResponse(
+ getChangedBarredPLMNListResponse(plmn, ""));
+ assertEquals(SATELLITE_ENTITLEMENT_STATUS_ENABLED, response.getEntitlementStatus());
+ assertTrue(response.getPlmnBarredList().size() == 1);
+ assertEquals(plmn, response.getPlmnBarredList().get(0));
+
+ // Received the barred plmn list set as empty string, 123456
+ response = new SatelliteEntitlementResponse(
+ getChangedBarredPLMNListResponse("", plmn));
+ assertEquals(SATELLITE_ENTITLEMENT_STATUS_ENABLED, response.getEntitlementStatus());
+ assertTrue(response.getPlmnBarredList().size() == 1);
+ assertEquals(plmn, response.getPlmnBarredList().get(0));
+
+ // Received the barred plmn list set as empty strings
+ response = new SatelliteEntitlementResponse(
+ getChangedBarredPLMNListResponse("", ""));
+ assertEquals(SATELLITE_ENTITLEMENT_STATUS_ENABLED, response.getEntitlementStatus());
+ assertTrue(response.getPlmnBarredList().size() == 0);
+
// Received null
response = new SatelliteEntitlementResponse(null);
assertEquals(SATELLITE_ENTITLEMENT_STATUS_DISABLED, response.getEntitlementStatus());
@@ -190,7 +218,12 @@
+ "{\"PLMN\":\"" + secondPlmn + "\",\"DataPlanType\":\"metered\"}]";
}
- private String getChangedPLMNListResponse(String firstPlmn, String secondPlmn) {
+ private String getBarredPlmns(String firstPlmn, String secondPlmn) {
+ return ",\"PLMNBarred\":[{\"PLMN\":\"" + firstPlmn + "\"}," + "{\"PLMN\":\"" + secondPlmn
+ + "\"}]";
+ }
+
+ private String getChangedAllowedPLMNListResponse(String firstPlmn, String secondPlmn) {
return "{\"VERS\":{\"version\":\"1\",\"validity\":\"172800\"},"
+ "\"TOKEN\":{\"token\":\"ASH127AHHA88SF\"},\""
+ ServiceEntitlement.APP_SATELLITE_ENTITLEMENT + "\":{"
@@ -198,4 +231,15 @@
+ getAllowedPlmns(firstPlmn, secondPlmn)
+ "}}";
}
+
+ private String getChangedBarredPLMNListResponse(String firstPlmn, String secondPlmn) {
+ return "{\"VERS\":{\"version\":\"1\",\"validity\":\"172800\"},"
+ + "\"TOKEN\":{\"token\":\"ASH127AHHA88SF\"},\""
+ + ServiceEntitlement.APP_SATELLITE_ENTITLEMENT + "\":{"
+ + "\"EntitlementStatus\":\"" + SATELLITE_ENTITLEMENT_STATUS_ENABLED + "\""
+ + ",\"PLMNAllowed\":[{\"PLMN\":\"31026\",\"DataPlanType\":\"unmetered\"},"
+ + "{\"PLMN\":\"302820\",\"DataPlanType\":\"metered\"}]"
+ + getBarredPlmns(firstPlmn, secondPlmn)
+ + "}}";
+ }
}
diff --git a/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java b/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
index e87c14d..2b805c3 100644
--- a/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
+++ b/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
@@ -3741,6 +3741,30 @@
NORMAL_ROUTED_EMERGENCY_NUMBER));
}
+ /**
+ * Verify where there are two sims, we choose the sim in emergency callback mode for the
+ * next emergency call.
+ */
+ @Test
+ public void testGetPhoneInEmergencyCallbackModeMultiSim() {
+ Phone mockPhone1 = Mockito.mock(Phone.class);
+ Phone mockPhone2 = Mockito.mock(Phone.class);
+
+ when(mPhoneFactoryProxy.getPhones()).thenReturn(
+ new Phone[] {mockPhone1, mockPhone2});
+
+ doReturn(false).when(mEmergencyStateTracker).isInEcm(eq(mockPhone1));
+ doReturn(true).when(mEmergencyStateTracker).isInEcm(eq(mockPhone2));
+
+ // Only applicable for AP domain seleciton service
+ assertNull(mTestConnectionService.getPhoneInEmergencyCallbackMode());
+
+ doReturn(true).when(mDomainSelectionResolver).isDomainSelectionSupported();
+
+ assertEquals(mockPhone2,
+ mTestConnectionService.getPhoneInEmergencyCallbackMode());
+ }
+
private void setupMockEmergencyNumbers(Phone mockPhone, List<EmergencyNumber> numbers) {
EmergencyNumberTracker emergencyNumberTracker = Mockito.mock(EmergencyNumberTracker.class);
// Yuck. There should really be a fake emergency number class which makes it easy to inject