Support HSUM for CarrierConfigManager APIs
This CL supports HSUM for CarrierConfigManager APIs by binding service or querying package info with the current user.
Bug: 345523448
Test: atest CarrierConfigLoaderTest
Flag: com.android.internal.telephony.flags.support_carrier_services_for_hsum
Change-Id: I2b06ed45a916a03172a7165b60adfd917417909e
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index c6c26b0..3a908d2 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -23,6 +23,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.app.compat.CompatChanges;
import android.content.BroadcastReceiver;
@@ -899,8 +900,11 @@
mServiceConnection[phoneId] = serviceConnection;
}
try {
- if (mContext.bindService(carrierService, serviceConnection,
- Context.BIND_AUTO_CREATE)) {
+ if (mFeatureFlags.supportCarrierServicesForHsum()
+ ? mContext.bindServiceAsUser(carrierService, serviceConnection,
+ Context.BIND_AUTO_CREATE, UserHandle.of(ActivityManager.getCurrentUser()))
+ : mContext.bindService(carrierService, serviceConnection,
+ Context.BIND_AUTO_CREATE)) {
if (eventId == EVENT_CONNECTED_TO_DEFAULT_FOR_NO_SIM_CONFIG) {
mServiceBoundForNoSimConfig[phoneId] = true;
} else {
@@ -1261,7 +1265,10 @@
@Nullable
private String getPackageVersion(@NonNull String packageName) {
try {
- PackageInfo info = mContext.getPackageManager().getPackageInfo(packageName, 0);
+ PackageInfo info = mFeatureFlags.supportCarrierServicesForHsum()
+ ? mContext.getPackageManager().getPackageInfoAsUser(packageName, 0,
+ ActivityManager.getCurrentUser())
+ : mContext.getPackageManager().getPackageInfo(packageName, 0);
return Long.toString(info.getLongVersionCode());
} catch (PackageManager.NameNotFoundException e) {
return null;
diff --git a/tests/src/com/android/phone/CarrierConfigLoaderTest.java b/tests/src/com/android/phone/CarrierConfigLoaderTest.java
index bda2313..99064dd 100644
--- a/tests/src/com/android/phone/CarrierConfigLoaderTest.java
+++ b/tests/src/com/android/phone/CarrierConfigLoaderTest.java
@@ -57,7 +57,10 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.android.TelephonyTestBase;
+import com.android.internal.telephony.GsmCdmaPhone;
import com.android.internal.telephony.IccCardConstants;
+import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.subscription.SubscriptionManagerService;
@@ -104,6 +107,7 @@
@Mock SharedPreferences mSharedPreferences;
@Mock TelephonyRegistryManager mTelephonyRegistryManager;
@Mock FeatureFlags mFeatureFlags;
+ @Mock GsmCdmaPhone mMockPhone;
private TelephonyManager mTelephonyManager;
private CarrierConfigLoader mCarrierConfigLoader;
@@ -118,6 +122,9 @@
public void setUp() throws Exception {
super.setUp();
MockitoAnnotations.initMocks(this);
+ Phone[] mPhones = new Phone[]{mMockPhone};
+ replaceInstance(PhoneFactory.class, "sPhones", null, mPhones);
+ replaceInstance(PhoneFactory.class, "sMadeDefaults", null, true);
doReturn(Context.PERMISSION_ENFORCER_SERVICE).when(mContext).getSystemServiceName(
eq(PermissionEnforcer.class));
doReturn(mFakePermissionEnforcer).when(mContext).getSystemService(