Merge 2024-06 Release (ab/AP2A.240605.024) to aosp-main-future
Bug: 343100748
Merged-In: Ic3d490422ea7973a21a59b5363232f8b8c06f872
Change-Id: I684660ce44e8a71706c915543c69c21481829699
diff --git a/flags/Android.bp b/flags/Android.bp
index 8f363b6..4646649 100644
--- a/flags/Android.bp
+++ b/flags/Android.bp
@@ -21,6 +21,7 @@
aconfig_declarations {
name: "telephony_flags",
package: "com.android.internal.telephony.flags",
+ container: "system",
srcs: [
"calling.aconfig",
"data.aconfig",
diff --git a/flags/calling.aconfig b/flags/calling.aconfig
index e67ebc6..c18fa1a 100644
--- a/flags/calling.aconfig
+++ b/flags/calling.aconfig
@@ -1,4 +1,5 @@
package: "com.android.internal.telephony.flags"
+container: "system"
flag {
name: "simultaneous_calling_indications"
diff --git a/flags/data.aconfig b/flags/data.aconfig
index 6334803..87fbede 100644
--- a/flags/data.aconfig
+++ b/flags/data.aconfig
@@ -1,4 +1,5 @@
package: "com.android.internal.telephony.flags"
+container: "system"
flag {
name: "auto_data_switch_allow_roaming"
diff --git a/flags/domainselection.aconfig b/flags/domainselection.aconfig
index 2e1dfc8..8ca6bd3 100644
--- a/flags/domainselection.aconfig
+++ b/flags/domainselection.aconfig
@@ -1,4 +1,5 @@
package: "com.android.internal.telephony.flags"
+container: "system"
flag {
name: "ap_domain_selection_enabled"
diff --git a/flags/ims.aconfig b/flags/ims.aconfig
index d09259e..ca03e51 100644
--- a/flags/ims.aconfig
+++ b/flags/ims.aconfig
@@ -1,4 +1,5 @@
package: "com.android.internal.telephony.flags"
+container: "system"
flag {
name: "conference_hold_unhold_changed_to_send_message"
diff --git a/flags/iwlan.aconfig b/flags/iwlan.aconfig
index 0dc9f8d..472baba 100644
--- a/flags/iwlan.aconfig
+++ b/flags/iwlan.aconfig
@@ -1,4 +1,5 @@
package: "com.android.internal.telephony.flags"
+container: "system"
flag {
name: "enable_aead_algorithms"
diff --git a/flags/messaging.aconfig b/flags/messaging.aconfig
index 1ba89ba..52c6213 100644
--- a/flags/messaging.aconfig
+++ b/flags/messaging.aconfig
@@ -1,4 +1,5 @@
package: "com.android.internal.telephony.flags"
+container: "system"
flag {
name: "reject_bad_sub_id_interaction"
@@ -19,4 +20,4 @@
namespace: "telephony"
description: "This flag controls the support of the new MMS error code MMS_ERROR_MMS_DISABLED."
bug: "305062594"
-}
\ No newline at end of file
+}
diff --git a/flags/misc.aconfig b/flags/misc.aconfig
index aabceca..a11ed3d 100644
--- a/flags/misc.aconfig
+++ b/flags/misc.aconfig
@@ -1,4 +1,5 @@
package: "com.android.internal.telephony.flags"
+container: "system"
flag {
name: "do_not_override_precise_label"
diff --git a/flags/network.aconfig b/flags/network.aconfig
index ab917f0..8d6c4ac 100644
--- a/flags/network.aconfig
+++ b/flags/network.aconfig
@@ -1,4 +1,5 @@
package: "com.android.internal.telephony.flags"
+container: "system"
flag {
name: "enable_carrier_config_n1_control_attempt2"
diff --git a/flags/satellite.aconfig b/flags/satellite.aconfig
index e640e6e..4a02854 100644
--- a/flags/satellite.aconfig
+++ b/flags/satellite.aconfig
@@ -1,4 +1,5 @@
package: "com.android.internal.telephony.flags"
+container: "system"
flag {
name: "oem_enabled_satellite_flag"
@@ -12,4 +13,4 @@
namespace: "telephony"
description: "This flag controls satellite communication supported by carriers."
bug:"296437388"
-}
\ No newline at end of file
+}
diff --git a/flags/subscription.aconfig b/flags/subscription.aconfig
index cebedd5..fa48fd4 100644
--- a/flags/subscription.aconfig
+++ b/flags/subscription.aconfig
@@ -1,4 +1,5 @@
package: "com.android.internal.telephony.flags"
+container: "system"
flag {
name: "work_profile_api_split"
@@ -40,4 +41,4 @@
namespace: "telephony"
description: "Supports querying if a subscription is associated with the caller"
bug: "325045841"
-}
\ No newline at end of file
+}
diff --git a/flags/telephony.aconfig b/flags/telephony.aconfig
index 9ef70b1..d8a290d 100644
--- a/flags/telephony.aconfig
+++ b/flags/telephony.aconfig
@@ -1,4 +1,5 @@
package: "com.android.internal.telephony.flags"
+container: "system"
flag {
name: "enforce_telephony_feature_mapping"
diff --git a/flags/uicc.aconfig b/flags/uicc.aconfig
index c1b860f..a50f83e 100644
--- a/flags/uicc.aconfig
+++ b/flags/uicc.aconfig
@@ -1,4 +1,5 @@
package: "com.android.internal.telephony.flags"
+container: "system"
flag {
name: "esim_bootstrap_provisioning_flag"
diff --git a/proto/src/telephony.proto b/proto/src/telephony.proto
index b87728b..92f62cc 100644
--- a/proto/src/telephony.proto
+++ b/proto/src/telephony.proto
@@ -259,8 +259,8 @@
// Roaming type
enum RoamingType {
- // Unknown. The default value. Different from ROAMING_TYPE_UNKNOWN.
- UNKNOWN = -1;
+ // Undefined. The default value. Different from ROAMING_TYPE_UNKNOWN.
+ ROAMING_TYPE_UNDEFINED = -1;
// In home network
ROAMING_TYPE_NOT_ROAMING = 0;
@@ -346,10 +346,10 @@
optional TelephonyOperator data_operator = 2;
// Current voice network roaming type
- optional RoamingType voice_roaming_type = 3 [default = UNKNOWN];
+ optional RoamingType voice_roaming_type = 3 [default = ROAMING_TYPE_UNDEFINED];
// Current data network roaming type
- optional RoamingType data_roaming_type = 4 [default = UNKNOWN];
+ optional RoamingType data_roaming_type = 4 [default = ROAMING_TYPE_UNDEFINED];
// Current voice radio technology
optional RadioAccessTechnology voice_rat = 5 [default = UNKNOWN];
diff --git a/src/java/com/android/internal/telephony/PhoneSubInfoController.java b/src/java/com/android/internal/telephony/PhoneSubInfoController.java
index a65bfeb..073e242 100644
--- a/src/java/com/android/internal/telephony/PhoneSubInfoController.java
+++ b/src/java/com/android/internal/telephony/PhoneSubInfoController.java
@@ -33,6 +33,7 @@
import android.os.Binder;
import android.os.Build;
import android.os.RemoteException;
+import android.os.SystemProperties;
import android.os.TelephonyServiceManager.ServiceRegisterer;
import android.telephony.ImsiEncryptionInfo;
import android.telephony.PhoneNumberUtils;
@@ -64,6 +65,7 @@
private AppOpsManager mAppOps;
private FeatureFlags mFeatureFlags;
private PackageManager mPackageManager;
+ private final int mVendorApiLevel;
public PhoneSubInfoController(Context context) {
this(context, new FeatureFlagsImpl());
@@ -80,6 +82,8 @@
mContext = context;
mPackageManager = context.getPackageManager();
mFeatureFlags = featureFlags;
+ mVendorApiLevel = SystemProperties.getInt(
+ "ro.vendor.api_level", Build.VERSION.DEVICE_INITIAL_SDK_INT);
}
@Deprecated
@@ -799,7 +803,11 @@
if (!mFeatureFlags.enforceTelephonyFeatureMappingForPublicApis()
|| !CompatChanges.isChangeEnabled(ENABLE_FEATURE_MAPPING, callingPackage,
- Binder.getCallingUserHandle())) {
+ Binder.getCallingUserHandle())
+ || mVendorApiLevel < Build.VERSION_CODES.VANILLA_ICE_CREAM) {
+ // Skip to check associated telephony feature,
+ // if compatibility change is not enabled for the current process or
+ // the SDK version of vendor partition is less than Android V.
return;
}
diff --git a/src/java/com/android/internal/telephony/SmsController.java b/src/java/com/android/internal/telephony/SmsController.java
index da1b07a..32c7429 100644
--- a/src/java/com/android/internal/telephony/SmsController.java
+++ b/src/java/com/android/internal/telephony/SmsController.java
@@ -38,6 +38,7 @@
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
+import android.os.SystemProperties;
import android.os.TelephonyServiceManager.ServiceRegisterer;
import android.os.UserHandle;
import android.provider.Telephony.Sms.Intents;
@@ -70,6 +71,8 @@
private final Context mContext;
private final PackageManager mPackageManager;
+ private final int mVendorApiLevel;
+
@NonNull private final FeatureFlags mFlags;
@VisibleForTesting
@@ -83,6 +86,9 @@
if (smsServiceRegisterer.get() == null) {
smsServiceRegisterer.register(this);
}
+
+ mVendorApiLevel = SystemProperties.getInt(
+ "ro.vendor.api_level", Build.VERSION.DEVICE_INITIAL_SDK_INT);
}
private Phone getPhone(int subId) {
@@ -1224,7 +1230,11 @@
if (!mFlags.enforceTelephonyFeatureMappingForPublicApis()
|| !CompatChanges.isChangeEnabled(ENABLE_FEATURE_MAPPING, callingPackage,
- Binder.getCallingUserHandle())) {
+ Binder.getCallingUserHandle())
+ || mVendorApiLevel < Build.VERSION_CODES.VANILLA_ICE_CREAM) {
+ // Skip to check associated telephony feature,
+ // if compatibility change is not enabled for the current process or
+ // the SDK version of vendor partition is less than Android V.
return;
}
diff --git a/src/java/com/android/internal/telephony/euicc/EuiccCardController.java b/src/java/com/android/internal/telephony/euicc/EuiccCardController.java
index 6e1c8dd..e511e8f 100644
--- a/src/java/com/android/internal/telephony/euicc/EuiccCardController.java
+++ b/src/java/com/android/internal/telephony/euicc/EuiccCardController.java
@@ -31,8 +31,10 @@
import android.content.pm.ComponentInfo;
import android.content.pm.PackageManager;
import android.os.Binder;
+import android.os.Build;
import android.os.Handler;
import android.os.RemoteException;
+import android.os.SystemProperties;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.service.euicc.EuiccProfileInfo;
@@ -75,6 +77,7 @@
private UiccController mUiccController;
private FeatureFlags mFeatureFlags;
private PackageManager mPackageManager;
+ private final int mVendorApiLevel;
private static EuiccCardController sInstance;
@@ -143,6 +146,8 @@
mEuiccController = euiccController;
mFeatureFlags = featureFlags;
mPackageManager = context.getPackageManager();
+ mVendorApiLevel = SystemProperties.getInt(
+ "ro.vendor.api_level", Build.VERSION.DEVICE_INITIAL_SDK_INT);
if (isBootUp(mContext)) {
mSimSlotStatusChangeReceiver = new SimSlotStatusChangedBroadcastReceiver();
@@ -1541,7 +1546,11 @@
if (!mFeatureFlags.enforceTelephonyFeatureMappingForPublicApis()
|| !CompatChanges.isChangeEnabled(ENABLE_FEATURE_MAPPING, callingPackage,
- Binder.getCallingUserHandle())) {
+ Binder.getCallingUserHandle())
+ || mVendorApiLevel < Build.VERSION_CODES.VANILLA_ICE_CREAM) {
+ // Skip to check associated telephony feature,
+ // if compatibility change is not enabled for the current process or
+ // the SDK version of vendor partition is less than Android V.
return;
}
diff --git a/src/java/com/android/internal/telephony/euicc/EuiccController.java b/src/java/com/android/internal/telephony/euicc/EuiccController.java
index 18b4b14..e527a14 100644
--- a/src/java/com/android/internal/telephony/euicc/EuiccController.java
+++ b/src/java/com/android/internal/telephony/euicc/EuiccController.java
@@ -34,7 +34,9 @@
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Binder;
+import android.os.Build;
import android.os.Bundle;
+import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
@@ -124,6 +126,7 @@
private final AppOpsManager mAppOpsManager;
private final PackageManager mPackageManager;
private final FeatureFlags mFeatureFlags;
+ private final int mVendorApiLevel;
// These values should be set or updated upon 1) system boot, 2) EuiccService/LPA is bound to
// the phone process, 3) values are updated remotely by server flags.
@@ -172,6 +175,8 @@
mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
mPackageManager = context.getPackageManager();
mFeatureFlags = featureFlags;
+ mVendorApiLevel = SystemProperties.getInt(
+ "ro.vendor.api_level", Build.VERSION.DEVICE_INITIAL_SDK_INT);
}
/**
@@ -2351,7 +2356,11 @@
if (!mFeatureFlags.enforceTelephonyFeatureMappingForPublicApis()
|| !CompatChanges.isChangeEnabled(ENABLE_FEATURE_MAPPING, callingPackage,
- Binder.getCallingUserHandle())) {
+ Binder.getCallingUserHandle())
+ || mVendorApiLevel < Build.VERSION_CODES.VANILLA_ICE_CREAM) {
+ // Skip to check associated telephony feature,
+ // if compatibility change is not enabled for the current process or
+ // the SDK version of vendor partition is less than Android V.
return;
}
diff --git a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
index 8757c97..5e066e1 100644
--- a/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
+++ b/src/java/com/android/internal/telephony/subscription/SubscriptionManagerService.java
@@ -312,6 +312,9 @@
@NonNull
private final int[] mSimState;
+ /** Vendor API level from system property. */
+ private final int mVendorApiLevel;
+
/**
* {@code true} if a user profile can only see the SIMs associated with it, unless it possesses
* no SIMs on the device.
@@ -466,6 +469,8 @@
mEuiccManager = context.getSystemService(EuiccManager.class);
mAppOpsManager = context.getSystemService(AppOpsManager.class);
mPackageManager = context.getPackageManager();
+ mVendorApiLevel = SystemProperties.getInt(
+ "ro.vendor.api_level", Build.VERSION.DEVICE_INITIAL_SDK_INT);
mUiccController = UiccController.getInstance();
mHandler = new Handler(looper);
@@ -2485,7 +2490,7 @@
})
public int setOpportunistic(boolean opportunistic, int subId, @NonNull String callingPackage) {
TelephonyPermissions.enforceAnyPermissionGrantedOrCarrierPrivileges(
- mContext, Binder.getCallingUid(), subId, true, "setOpportunistic",
+ mContext, subId, Binder.getCallingUid(), true, "setOpportunistic",
Manifest.permission.MODIFY_PHONE_STATE);
enforceTelephonyFeatureWithException(callingPackage, "setOpportunistic");
@@ -4445,7 +4450,11 @@
if (!mFeatureFlags.enforceTelephonyFeatureMappingForPublicApis()
|| !CompatChanges.isChangeEnabled(ENABLE_FEATURE_MAPPING, callingPackage,
- Binder.getCallingUserHandle())) {
+ Binder.getCallingUserHandle())
+ || mVendorApiLevel < Build.VERSION_CODES.VANILLA_ICE_CREAM) {
+ // Skip to check associated telephony feature,
+ // if compatibility change is not enabled for the current process or
+ // the SDK version of vendor partition is less than Android V.
return;
}
diff --git a/tests/telephonytests/Android.bp b/tests/telephonytests/Android.bp
index 8547581..a6b47cd 100644
--- a/tests/telephonytests/Android.bp
+++ b/tests/telephonytests/Android.bp
@@ -1,4 +1,5 @@
package {
+ default_team: "trendy_team_fwk_telephony",
// See: http://go/android-license-faq
default_applicable_licenses: [
"frameworks_opt_telephony_tests_telephonytests_license",
diff --git a/tests/telephonytests/src/com/android/internal/telephony/PhoneSubInfoControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/PhoneSubInfoControllerTest.java
index 1af4a76..c2af9d8 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/PhoneSubInfoControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/PhoneSubInfoControllerTest.java
@@ -230,7 +230,12 @@
@Test
@SmallTest
@EnableCompatChanges({TelephonyManager.ENABLE_FEATURE_MAPPING})
- public void testGetNai_EnabledEnforceTelephonyFeatureMappingForPublicApis() {
+ public void testGetNai_EnabledEnforceTelephonyFeatureMappingForPublicApis() throws Exception {
+ // Replace field to set SDK version of vendor partition to Android V
+ int vendorApiLevel = Build.VERSION_CODES.VANILLA_ICE_CREAM;
+ replaceInstance(PhoneSubInfoController.class, "mVendorApiLevel",
+ mPhoneSubInfoControllerUT, vendorApiLevel);
+
// FeatureFlags enabled, System has required feature
doReturn(true).when(mFeatureFlags).enforceTelephonyFeatureMappingForPublicApis();
doReturn(true).when(mPm).hasSystemFeature(
diff --git a/tests/telephonytests/src/com/android/internal/telephony/SmsControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/SmsControllerTest.java
index f8d1bec..06dbd0b 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/SmsControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/SmsControllerTest.java
@@ -31,6 +31,7 @@
import android.compat.testing.PlatformCompatChangeRule;
import android.content.pm.PackageManager;
+import android.os.Build;
import android.telephony.TelephonyManager;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
@@ -295,11 +296,15 @@
@Test
@EnableCompatChanges({TelephonyManager.ENABLE_FEATURE_MAPPING})
- public void sendTextForSubscriberTestEnabledTelephonyFeature() {
+ public void sendTextForSubscriberTestEnabledTelephonyFeature() throws Exception {
int subId = 1;
doReturn(true).when(mSubscriptionManager)
.isSubscriptionAssociatedWithUser(eq(subId), any());
+ // Replace field to set SDK version of vendor partition to Android V
+ int vendorApiLevel = Build.VERSION_CODES.VANILLA_ICE_CREAM;
+ replaceInstance(SmsController.class, "mVendorApiLevel", mSmsControllerUT, vendorApiLevel);
+
// Feature enabled, device does not have required telephony feature.
doReturn(true).when(mFeatureFlags).enforceTelephonyFeatureMappingForPublicApis();
doReturn(false).when(mPackageManager).hasSystemFeature(
diff --git a/tests/telephonytests/src/com/android/internal/telephony/euicc/EuiccControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/euicc/EuiccControllerTest.java
index 57ae9ed..cc4b180 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/euicc/EuiccControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/euicc/EuiccControllerTest.java
@@ -48,6 +48,7 @@
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
+import android.os.Build;
import android.os.Parcelable;
import android.os.RemoteException;
import android.os.UserManager;
@@ -1605,7 +1606,12 @@
@Test
@EnableCompatChanges({EuiccManager.INACTIVE_PORT_AVAILABILITY_CHECK,
TelephonyManager.ENABLE_FEATURE_MAPPING})
- public void testIsSimPortAvailable_WithTelephonyFeatureMapping() {
+ public void testIsSimPortAvailable_WithTelephonyFeatureMapping() throws Exception {
+ // Replace field to set SDK version of vendor partition to Android V
+ int vendorApiLevel = Build.VERSION_CODES.VANILLA_ICE_CREAM;
+ replaceInstance(EuiccController.class, "mVendorApiLevel", (EuiccController) mController,
+ vendorApiLevel);
+
// Feature flag enabled, device has required telephony feature.
doReturn(true).when(mFeatureFlags).enforceTelephonyFeatureMappingForPublicApis();
doReturn(true).when(mPackageManager).hasSystemFeature(
diff --git a/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java b/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java
index defa730..cc20dfd 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/subscription/SubscriptionManagerServiceTest.java
@@ -479,7 +479,8 @@
@Test
@EnableCompatChanges({TelephonyManager.ENABLE_FEATURE_MAPPING})
- public void testSetPhoneNumber_EnabledEnforceTelephonyFeatureMappingForPublicApis() {
+ public void testSetPhoneNumber_EnabledEnforceTelephonyFeatureMappingForPublicApis()
+ throws Exception {
mContextFixture.addCallingOrSelfPermission(Manifest.permission.MODIFY_PHONE_STATE);
mSubscriptionManagerServiceUT.addSubInfo(FAKE_ICCID1, FAKE_CARRIER_NAME1,
0, SubscriptionManager.SUBSCRIPTION_TYPE_LOCAL_SIM);
@@ -491,6 +492,11 @@
// Grant carrier privilege
setCarrierPrivilegesForSubId(true, 1);
+ // Replace field to set SDK version of vendor partition to Android V
+ int vendorApiLevel = Build.VERSION_CODES.VANILLA_ICE_CREAM;
+ replaceInstance(SubscriptionManagerService.class, "mVendorApiLevel",
+ mSubscriptionManagerServiceUT, vendorApiLevel);
+
// Enabled FeatureFlags and ENABLE_FEATURE_MAPPING, telephony features are defined
doReturn(true).when(mFlags).enforceTelephonyFeatureMappingForPublicApis();
doReturn(true).when(mPackageManager).hasSystemFeature(