[Telephony Mainline] To replace SubscriptionController api with SubscriptionManager
SubscriptionController
- getActiveSubIdList(Z)
-> use @SystemApi getActiveAndHiddenSubscriptionInfoList instead
- getDefaultSubId()
-> use getDefaultSubscriptionId() instead
- isActiveSubId(I)
-> use isActiveSubscriptionId(int) instead
-> add permission READ_PHONE_STATE
Bug: 145345704
Test: make & atest CarrierIdProviderTest
Change-Id: I8fcf96a1f4357ba565740e6422ac56ccea0338ca
diff --git a/src/com/android/providers/telephony/CarrierIdProvider.java b/src/com/android/providers/telephony/CarrierIdProvider.java
index dadacc5..122c304 100644
--- a/src/com/android/providers/telephony/CarrierIdProvider.java
+++ b/src/com/android/providers/telephony/CarrierIdProvider.java
@@ -34,12 +34,12 @@
import android.os.FileUtils;
import android.os.SystemProperties;
import android.provider.Telephony.CarrierId;
+import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.text.TextUtils;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.telephony.SubscriptionController;
import com.android.internal.telephony.util.TelephonyUtils;
import com.android.providers.telephony.nano.CarrierIdProto;
@@ -605,13 +605,21 @@
// Handle DEFAULT_SUBSCRIPTION_ID
if (subId == SubscriptionManager.DEFAULT_SUBSCRIPTION_ID) {
- subId = SubscriptionController.getInstance().getDefaultSubId();
+ subId = SubscriptionManager.getDefaultSubscriptionId();
}
- if (!SubscriptionController.getInstance().isActiveSubId(subId)) {
+ SubscriptionManager sm = (SubscriptionManager) getContext().getSystemService(
+ Context.TELEPHONY_SUBSCRIPTION_SERVICE);
+ if (!sm.isActiveSubscriptionId(subId)) {
// Remove absent subId from the currentSubscriptionMap.
- final List activeSubscriptions = Arrays.asList(SubscriptionController.getInstance()
- .getActiveSubIdList(false));
+ List activeSubscriptions = new ArrayList<>();
+ final List<SubscriptionInfo> subscriptionInfoList =
+ sm.getActiveAndHiddenSubscriptionInfoList();
+ if (subscriptionInfoList != null) {
+ for (SubscriptionInfo subInfo : subscriptionInfoList) {
+ activeSubscriptions.add(subInfo.getSubscriptionId());
+ }
+ }
int count = 0;
for (int subscription : mCurrentSubscriptionMap.keySet()) {
if (!activeSubscriptions.contains(subscription)) {
@@ -631,7 +639,7 @@
private Cursor queryCarrierIdForCurrentSubscription(Uri uri, String[] projectionIn) {
// Parse the subId, using the default subId if subId is not provided
- int subId = SubscriptionController.getInstance().getDefaultSubId();
+ int subId = SubscriptionManager.getDefaultSubscriptionId();
if (!TextUtils.isEmpty(uri.getLastPathSegment())) {
try {
subId = Integer.parseInt(uri.getLastPathSegment());
@@ -643,7 +651,7 @@
// Handle DEFAULT_SUBSCRIPTION_ID
if (subId == SubscriptionManager.DEFAULT_SUBSCRIPTION_ID) {
- subId = SubscriptionController.getInstance().getDefaultSubId();
+ subId = SubscriptionManager.getDefaultSubscriptionId();
}
if (!mCurrentSubscriptionMap.containsKey(subId)) {
diff --git a/src/com/android/providers/telephony/ServiceStateProvider.java b/src/com/android/providers/telephony/ServiceStateProvider.java
index f707200..2b4fae3 100644
--- a/src/com/android/providers/telephony/ServiceStateProvider.java
+++ b/src/com/android/providers/telephony/ServiceStateProvider.java
@@ -60,7 +60,6 @@
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.telephony.SubscriptionController;
import java.util.HashMap;
@@ -111,7 +110,7 @@
@VisibleForTesting
public int getDefaultSubId() {
- return SubscriptionController.getInstance().getDefaultSubId();
+ return SubscriptionManager.getDefaultSubscriptionId();
}
@Override
diff --git a/tests/src/com/android/providers/telephony/CarrierIdProviderTest.java b/tests/src/com/android/providers/telephony/CarrierIdProviderTest.java
index 13917ff..ee0e016 100644
--- a/tests/src/com/android/providers/telephony/CarrierIdProviderTest.java
+++ b/tests/src/com/android/providers/telephony/CarrierIdProviderTest.java
@@ -17,6 +17,7 @@
package com.android.providers.telephony;
import android.content.ContentValues;
+import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
@@ -26,23 +27,21 @@
import android.net.Uri;
import android.os.Handler;
import android.provider.Telephony.CarrierId;
+import android.telephony.SubscriptionManager;
import android.test.mock.MockContentResolver;
import android.test.mock.MockContext;
import android.util.Log;
-import com.android.internal.telephony.SubscriptionController;
-
import junit.framework.TestCase;
import org.junit.Assert;
import org.junit.Test;
-import java.lang.reflect.Field;
-
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
/**
* Tests for testing CRUD operations of CarrierIdProvider.
@@ -77,7 +76,7 @@
private CarrierIdProviderTestable mCarrierIdProviderTestable;
private FakeContentObserver mContentObserver;
private SharedPreferences mSharedPreferences = mock(SharedPreferences.class);
- private SubscriptionController mSubController = mock(SubscriptionController.class);
+ private SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
private class FakeContentResolver extends MockContentResolver {
@Override
@@ -121,8 +120,13 @@
@Override
public Object getSystemService(String name) {
- Log.d(TAG, "getSystemService: returning null");
- return null;
+ switch (name) {
+ case Context.TELEPHONY_SUBSCRIPTION_SERVICE:
+ return subscriptionManager;
+ default:
+ Log.d(TAG, "getSystemService: returning null");
+ return null;
+ }
}
@Override
@@ -148,12 +152,6 @@
mContext = new MockContextWithProvider(mCarrierIdProviderTestable);
mContentResolver = mContext.getContentResolver();
mContentObserver = new FakeContentObserver(null);
-
- doReturn("").when(mSubController).getDataEnabledOverrideRules(anyInt());
-
- Field field = SubscriptionController.class.getDeclaredField("sInstance");
- field.setAccessible(true);
- field.set(null, mSubController);
}
@Override
@@ -341,8 +339,7 @@
ContentValues cv = new ContentValues();
cv.put(CarrierId.CARRIER_ID, dummy_cid);
cv.put(CarrierId.CARRIER_NAME, dummy_name);
- doReturn(1).when(mSubController).getDefaultSubId();
- doReturn(true).when(mSubController).isActiveSubId(eq(1));
+ when(subscriptionManager.isActiveSubscriptionId(eq(1))).thenReturn(true);
mContext.getContentResolver().update(Uri.withAppendedPath(CarrierId.CONTENT_URI,
"1"), cv, null, null);
} catch (Exception e) {
@@ -351,7 +348,6 @@
}
int carrierId = -1;
String carrierName = null;
-
// query carrier id for subId 1
try {
final Cursor c = mContext.getContentResolver().query(
@@ -416,9 +412,6 @@
ContentValues cv = new ContentValues();
cv.put(CarrierId.CARRIER_ID, dummy_cid);
cv.put(CarrierId.CARRIER_NAME, dummy_name);
- doReturn(1).when(mSubController).getDefaultSubId();
- doReturn(true).when(mSubController).isActiveSubId(eq(1));
-
mContext.getContentResolver().update(CarrierId.CONTENT_URI, cv, null, null);
Assert.fail("should throw an exception for wrong uri");
} catch (IllegalArgumentException ex) {