Merge "Import translations. DO NOT MERGE ANYWHERE" into 24D1-dev
diff --git a/ecc/input/eccdata.txt b/ecc/input/eccdata.txt
index c4edc9e..3248179 100644
--- a/ecc/input/eccdata.txt
+++ b/ecc/input/eccdata.txt
@@ -208,14 +208,17 @@
eccs {
phone_number: "122"
types: POLICE
+ routing: NORMAL
}
eccs {
phone_number: "124"
types: AMBULANCE
+ routing: NORMAL
}
eccs {
phone_number: "123"
types: FIRE
+ routing: NORMAL
}
ecc_fallback: "112"
}
@@ -518,7 +521,7 @@
eccs {
phone_number: "117"
types: POLICE
- routing: EMERGENCY
+ routing: NORMAL
}
eccs {
phone_number: "144"
@@ -548,6 +551,7 @@
eccs {
phone_number: "1414"
types: TYPE_UNSPECIFIED
+ routing: NORMAL
}
eccs {
phone_number: "0800117117"
@@ -1197,6 +1201,46 @@
types: FIRE
routing: NORMAL
}
+ eccs {
+ phone_number: "115"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "116000"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "191"
+ types: MOUNTAIN_RESCUE
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "196"
+ types: MARINE_GUARD
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "197"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "116117"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "119"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "116111"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
ecc_fallback: "112"
}
countries {
@@ -1367,10 +1411,12 @@
eccs {
phone_number: "101"
types: AMBULANCE
+ routing: NORMAL
}
eccs {
phone_number: "102"
types: FIRE
+ routing: NORMAL
}
ecc_fallback: "112"
}
@@ -1389,6 +1435,28 @@
types: FIRE
routing: NORMAL
}
+ eccs {
+ phone_number: "101"
+ types: FIRE
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "102"
+ types: AMBULANCE
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "103"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "108"
+ types: POLICE
+ types: AMBULANCE
+ types: FIRE
+ routing: NORMAL
+ }
ecc_fallback: "112"
}
countries {
@@ -2360,6 +2428,86 @@
types: AMBULANCE
types: FIRE
}
+ eccs {
+ phone_number: "984"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ normal_routing_mncs: "01"
+ normal_routing_mncs: "06"
+ }
+ eccs {
+ phone_number: "985"
+ types: MOUNTAIN_RESCUE
+ routing: NORMAL
+ normal_routing_mncs: "01"
+ normal_routing_mncs: "06"
+ }
+ eccs {
+ phone_number: "997"
+ types: POLICE
+ routing: NORMAL
+ normal_routing_mncs: "01"
+ normal_routing_mncs: "06"
+ }
+ eccs {
+ phone_number: "998"
+ types: FIRE
+ routing: NORMAL
+ normal_routing_mncs: "01"
+ normal_routing_mncs: "06"
+ }
+ eccs {
+ phone_number: "999"
+ types: AMBULANCE
+ routing: NORMAL
+ normal_routing_mncs: "01"
+ normal_routing_mncs: "06"
+ }
+ eccs {
+ phone_number: "986"
+ types: POLICE
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "987"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "989"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "991"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "992"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "993"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "994"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "995"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "996"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
ecc_fallback: "112"
}
countries {
@@ -2470,6 +2618,46 @@
types: FIRE
routing: NORMAL
}
+ eccs {
+ phone_number: "115"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "116000"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "191"
+ types: MOUNTAIN_RESCUE
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "196"
+ types: MARINE_GUARD
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "197"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "116117"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "119"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
+ eccs {
+ phone_number: "116111"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
ecc_fallback: "112"
}
countries {
@@ -2628,6 +2816,7 @@
phone_number: "995"
types: AMBULANCE
types: FIRE
+ routing: NORMAL
}
ecc_fallback: "112"
}
@@ -2652,6 +2841,11 @@
types: AMBULANCE
types: FIRE
}
+ eccs {
+ phone_number: "113"
+ types: POLICE
+ routing: NORMAL
+ }
ecc_fallback: "112"
}
countries {
@@ -2662,6 +2856,11 @@
types: AMBULANCE
types: FIRE
}
+ eccs {
+ phone_number: "159"
+ types: TYPE_UNSPECIFIED
+ routing: NORMAL
+ }
ecc_fallback: "112"
}
countries {
@@ -2984,11 +3183,13 @@
eccs {
phone_number: "110"
types: POLICE
+ routing: NORMAL
}
eccs {
phone_number: "119"
types: AMBULANCE
types: FIRE
+ routing: NORMAL
}
ecc_fallback: "112"
}
diff --git a/ecc/output/eccdata b/ecc/output/eccdata
index 482ed79..b42de09 100644
--- a/ecc/output/eccdata
+++ b/ecc/output/eccdata
Binary files differ
diff --git a/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java b/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
index ea72acd..886451d 100644
--- a/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
+++ b/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
@@ -17,6 +17,7 @@
package com.android.phone.satellite.accesscontrol;
import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_COMMUNICATION_ALLOWED;
+import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_PROVISIONED;
import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_SUPPORTED;
import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_REQUEST_NOT_SUPPORTED;
import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SUCCESS;
@@ -49,6 +50,7 @@
import android.telecom.TelecomManager;
import android.telephony.AnomalyReporter;
import android.telephony.Rlog;
+import android.telephony.SubscriptionManager;
import android.telephony.satellite.ISatelliteCommunicationAllowedStateCallback;
import android.telephony.satellite.SatelliteManager;
import android.text.TextUtils;
@@ -140,6 +142,8 @@
@NonNull
private final ResultReceiver mInternalSatelliteSupportedResultReceiver;
@NonNull
+ private final ResultReceiver mInternalSatelliteProvisionedResultReceiver;
+ @NonNull
protected final Object mLock = new Object();
@GuardedBy("mLock")
@NonNull
@@ -241,6 +245,12 @@
handleIsSatelliteSupportedResult(resultCode, resultData);
}
};
+ mInternalSatelliteProvisionedResultReceiver = new ResultReceiver(this) {
+ @Override
+ protected void onReceiveResult(int resultCode, Bundle resultData) {
+ handleIsSatelliteProvisionedResult(resultCode, resultData);
+ }
+ };
// Init the SatelliteOnDeviceAccessController so that the S2 level can be cached
initSatelliteOnDeviceAccessController();
}
@@ -723,7 +733,11 @@
false);
sendSatelliteAllowResultToReceivers(resultCode, bundle, false);
} else {
- checkSatelliteAccessRestrictionForCurrentLocation();
+ logd("Satellite is supported, check if provisioned or not");
+ int subId = resultData.getInt(SatelliteController.SATELLITE_SUBSCRIPTION_ID,
+ SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
+ mSatelliteController.requestIsSatelliteProvisioned(
+ subId, mInternalSatelliteProvisionedResultReceiver);
}
} else {
loge("KEY_SATELLITE_SUPPORTED does not exist.");
@@ -735,6 +749,33 @@
}
}
+ private void handleIsSatelliteProvisionedResult(int resultCode, Bundle resultData) {
+ logd("handleIsSatelliteProvisionedResult: resultCode=" + resultCode);
+ synchronized (mLock) {
+ if (resultCode == SATELLITE_RESULT_SUCCESS) {
+ if (resultData.containsKey(KEY_SATELLITE_PROVISIONED)) {
+ boolean isSatelliteProvisioned =
+ resultData.getBoolean(KEY_SATELLITE_PROVISIONED);
+ if (!isSatelliteProvisioned) {
+ logd("Satellite is not provisioned");
+ Bundle bundle = new Bundle();
+ bundle.putBoolean(SatelliteManager.KEY_SATELLITE_COMMUNICATION_ALLOWED,
+ false);
+ sendSatelliteAllowResultToReceivers(resultCode, bundle, false);
+ } else {
+ logd("Satellite is provisioned");
+ checkSatelliteAccessRestrictionForCurrentLocation();
+ }
+ } else {
+ loge("KEY_SATELLITE_PROVISIONED does not exist.");
+ sendSatelliteAllowResultToReceivers(resultCode, resultData, false);
+ }
+ } else {
+ sendSatelliteAllowResultToReceivers(resultCode, resultData, false);
+ }
+ }
+ }
+
private void sendSatelliteAllowResultToReceivers(int resultCode, Bundle resultData,
boolean allowed) {
updateCurrentSatelliteAllowedState(allowed);
diff --git a/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java b/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java
index 8a29242..62d9d8c 100644
--- a/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java
+++ b/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java
@@ -325,6 +325,7 @@
// Network country codes are available.
setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS);
+ setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS);
clearAllInvocations();
when(mMockCountryDetector.getCurrentNetworkCountryIso()).thenReturn(listOf("US", "CA"));
mSatelliteAccessControllerUT.requestIsCommunicationAllowedForCurrentLocation(
@@ -621,6 +622,23 @@
any(ResultReceiver.class));
}
+ private void setUpResponseForRequestIsSatelliteProvisioned(
+ boolean isSatelliteProvisioned, @SatelliteManager.SatelliteResult int error) {
+ doAnswer(invocation -> {
+ ResultReceiver resultReceiver = invocation.getArgument(1);
+ if (error == SATELLITE_RESULT_SUCCESS) {
+ Bundle bundle = new Bundle();
+ bundle.putBoolean(SatelliteManager.KEY_SATELLITE_PROVISIONED,
+ isSatelliteProvisioned);
+ resultReceiver.send(error, bundle);
+ } else {
+ resultReceiver.send(error, Bundle.EMPTY);
+ }
+ return null;
+ }).when(mMockSatelliteController).requestIsSatelliteProvisioned(anyInt(),
+ any(ResultReceiver.class));
+ }
+
@SafeVarargs
private static <E> List<E> listOf(E... values) {
return Arrays.asList(values);