Merge "Update TelephonySubscriptionTracker to use new CPCallback interface"

This commit is contained in:
Rambo Wang
2022-03-23 19:37:59 +00:00
committed by Gerrit Code Review
2 changed files with 40 additions and 40 deletions

View File

@@ -39,7 +39,7 @@ import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
import android.telephony.TelephonyCallback; import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager.CarrierPrivilegesListener; import android.telephony.TelephonyManager.CarrierPrivilegesCallback;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.ArraySet; import android.util.ArraySet;
import android.util.Slog; import android.util.Slog;
@@ -98,8 +98,7 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
@NonNull private final OnSubscriptionsChangedListener mSubscriptionChangedListener; @NonNull private final OnSubscriptionsChangedListener mSubscriptionChangedListener;
@NonNull @NonNull
private final List<CarrierPrivilegesListener> mCarrierPrivilegesChangedListeners = private final List<CarrierPrivilegesCallback> mCarrierPrivilegesCallbacks = new ArrayList<>();
new ArrayList<>();
@NonNull private TelephonySubscriptionSnapshot mCurrentSnapshot; @NonNull private TelephonySubscriptionSnapshot mCurrentSnapshot;
@@ -151,20 +150,21 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
executor, mSubscriptionChangedListener); executor, mSubscriptionChangedListener);
mTelephonyManager.registerTelephonyCallback(executor, mActiveDataSubIdListener); mTelephonyManager.registerTelephonyCallback(executor, mActiveDataSubIdListener);
registerCarrierPrivilegesListeners(); registerCarrierPrivilegesCallbacks();
} }
private void registerCarrierPrivilegesListeners() { // TODO(b/221306368): Refactor with the new onCarrierServiceChange in the new CPCallback
private void registerCarrierPrivilegesCallbacks() {
final HandlerExecutor executor = new HandlerExecutor(mHandler); final HandlerExecutor executor = new HandlerExecutor(mHandler);
final int modemCount = mTelephonyManager.getActiveModemCount(); final int modemCount = mTelephonyManager.getActiveModemCount();
try { try {
for (int i = 0; i < modemCount; i++) { for (int i = 0; i < modemCount; i++) {
CarrierPrivilegesListener carrierPrivilegesListener = CarrierPrivilegesCallback carrierPrivilegesCallback =
new CarrierPrivilegesListener() { new CarrierPrivilegesCallback() {
@Override @Override
public void onCarrierPrivilegesChanged( public void onCarrierPrivilegesChanged(
@NonNull List<String> privilegedPackageNames, @NonNull Set<String> privilegedPackageNames,
@NonNull int[] privilegedUids) { @NonNull Set<Integer> privilegedUids) {
// Re-trigger the synchronous check (which is also very cheap due // Re-trigger the synchronous check (which is also very cheap due
// to caching in CarrierPrivilegesTracker). This allows consistency // to caching in CarrierPrivilegesTracker). This allows consistency
// with the onSubscriptionsChangedListener and broadcasts. // with the onSubscriptionsChangedListener and broadcasts.
@@ -172,9 +172,9 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
} }
}; };
mTelephonyManager.addCarrierPrivilegesListener( mTelephonyManager.registerCarrierPrivilegesCallback(
i, executor, carrierPrivilegesListener); i, executor, carrierPrivilegesCallback);
mCarrierPrivilegesChangedListeners.add(carrierPrivilegesListener); mCarrierPrivilegesCallbacks.add(carrierPrivilegesCallback);
} }
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
Slog.wtf(TAG, "Encounted exception registering carrier privileges listeners", e); Slog.wtf(TAG, "Encounted exception registering carrier privileges listeners", e);
@@ -191,15 +191,15 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
mSubscriptionManager.removeOnSubscriptionsChangedListener(mSubscriptionChangedListener); mSubscriptionManager.removeOnSubscriptionsChangedListener(mSubscriptionChangedListener);
mTelephonyManager.unregisterTelephonyCallback(mActiveDataSubIdListener); mTelephonyManager.unregisterTelephonyCallback(mActiveDataSubIdListener);
unregisterCarrierPrivilegesListeners(); unregisterCarrierPrivilegesCallbacks();
} }
private void unregisterCarrierPrivilegesListeners() { private void unregisterCarrierPrivilegesCallbacks() {
for (CarrierPrivilegesListener carrierPrivilegesListener : for (CarrierPrivilegesCallback carrierPrivilegesCallback :
mCarrierPrivilegesChangedListeners) { mCarrierPrivilegesCallbacks) {
mTelephonyManager.removeCarrierPrivilegesListener(carrierPrivilegesListener); mTelephonyManager.unregisterCarrierPrivilegesCallback(carrierPrivilegesCallback);
} }
mCarrierPrivilegesChangedListeners.clear(); mCarrierPrivilegesCallbacks.clear();
} }
/** /**
@@ -283,7 +283,7 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
} }
private void handleActionMultiSimConfigChanged(Context context, Intent intent) { private void handleActionMultiSimConfigChanged(Context context, Intent intent) {
unregisterCarrierPrivilegesListeners(); unregisterCarrierPrivilegesCallbacks();
// Clear invalid slotIds from the mReadySubIdsBySlotId map. // Clear invalid slotIds from the mReadySubIdsBySlotId map.
final int modemCount = mTelephonyManager.getActiveModemCount(); final int modemCount = mTelephonyManager.getActiveModemCount();
@@ -296,7 +296,7 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver {
} }
} }
registerCarrierPrivilegesListeners(); registerCarrierPrivilegesCallbacks();
handleSubscriptionsChanged(); handleSubscriptionsChanged();
} }

View File

@@ -60,7 +60,7 @@ import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
import android.telephony.TelephonyCallback; import android.telephony.TelephonyCallback;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager.CarrierPrivilegesListener; import android.telephony.TelephonyManager.CarrierPrivilegesCallback;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.ArraySet; import android.util.ArraySet;
@@ -187,11 +187,11 @@ public class TelephonySubscriptionTrackerTest {
return captor.getValue(); return captor.getValue();
} }
private List<CarrierPrivilegesListener> getCarrierPrivilegesListeners() { private List<CarrierPrivilegesCallback> getCarrierPrivilegesCallbacks() {
final ArgumentCaptor<CarrierPrivilegesListener> captor = final ArgumentCaptor<CarrierPrivilegesCallback> captor =
ArgumentCaptor.forClass(CarrierPrivilegesListener.class); ArgumentCaptor.forClass(CarrierPrivilegesCallback.class);
verify(mTelephonyManager, atLeastOnce()) verify(mTelephonyManager, atLeastOnce())
.addCarrierPrivilegesListener(anyInt(), any(), captor.capture()); .registerCarrierPrivilegesCallback(anyInt(), any(), captor.capture());
return captor.getAllValues(); return captor.getAllValues();
} }
@@ -270,12 +270,12 @@ public class TelephonySubscriptionTrackerTest {
assertNotNull(getOnSubscriptionsChangedListener()); assertNotNull(getOnSubscriptionsChangedListener());
verify(mTelephonyManager, times(2)) verify(mTelephonyManager, times(2))
.addCarrierPrivilegesListener(anyInt(), any(HandlerExecutor.class), any()); .registerCarrierPrivilegesCallback(anyInt(), any(HandlerExecutor.class), any());
verify(mTelephonyManager) verify(mTelephonyManager)
.addCarrierPrivilegesListener(eq(0), any(HandlerExecutor.class), any()); .registerCarrierPrivilegesCallback(eq(0), any(HandlerExecutor.class), any());
verify(mTelephonyManager) verify(mTelephonyManager)
.addCarrierPrivilegesListener(eq(1), any(HandlerExecutor.class), any()); .registerCarrierPrivilegesCallback(eq(1), any(HandlerExecutor.class), any());
assertEquals(2, getCarrierPrivilegesListeners().size()); assertEquals(2, getCarrierPrivilegesCallbacks().size());
} }
@Test @Test
@@ -287,10 +287,10 @@ public class TelephonySubscriptionTrackerTest {
final OnSubscriptionsChangedListener listener = getOnSubscriptionsChangedListener(); final OnSubscriptionsChangedListener listener = getOnSubscriptionsChangedListener();
verify(mSubscriptionManager).removeOnSubscriptionsChangedListener(eq(listener)); verify(mSubscriptionManager).removeOnSubscriptionsChangedListener(eq(listener));
for (CarrierPrivilegesListener carrierPrivilegesListener : for (CarrierPrivilegesCallback carrierPrivilegesCallback :
getCarrierPrivilegesListeners()) { getCarrierPrivilegesCallbacks()) {
verify(mTelephonyManager) verify(mTelephonyManager)
.removeCarrierPrivilegesListener(eq(carrierPrivilegesListener)); .unregisterCarrierPrivilegesCallback(eq(carrierPrivilegesCallback));
} }
} }
@@ -303,15 +303,15 @@ public class TelephonySubscriptionTrackerTest {
mTelephonySubscriptionTracker.setReadySubIdsBySlotId(readySubIdsBySlotId); mTelephonySubscriptionTracker.setReadySubIdsBySlotId(readySubIdsBySlotId);
doReturn(1).when(mTelephonyManager).getActiveModemCount(); doReturn(1).when(mTelephonyManager).getActiveModemCount();
List<CarrierPrivilegesListener> carrierPrivilegesListeners = List<CarrierPrivilegesCallback> carrierPrivilegesCallbacks =
getCarrierPrivilegesListeners(); getCarrierPrivilegesCallbacks();
mTelephonySubscriptionTracker.onReceive(mContext, buildTestMultiSimConfigBroadcastIntent()); mTelephonySubscriptionTracker.onReceive(mContext, buildTestMultiSimConfigBroadcastIntent());
mTestLooper.dispatchAll(); mTestLooper.dispatchAll();
for (CarrierPrivilegesListener carrierPrivilegesListener : carrierPrivilegesListeners) { for (CarrierPrivilegesCallback carrierPrivilegesCallback : carrierPrivilegesCallbacks) {
verify(mTelephonyManager) verify(mTelephonyManager)
.removeCarrierPrivilegesListener(eq(carrierPrivilegesListener)); .unregisterCarrierPrivilegesCallback(eq(carrierPrivilegesCallback));
} }
// Expect cache cleared for inactive slots. // Expect cache cleared for inactive slots.
@@ -323,9 +323,9 @@ public class TelephonySubscriptionTrackerTest {
// Expect a new CarrierPrivilegesListener to have been registered for slot 0, and none other // Expect a new CarrierPrivilegesListener to have been registered for slot 0, and none other
// (2 previously registered during startup, for slots 0 & 1) // (2 previously registered during startup, for slots 0 & 1)
verify(mTelephonyManager, times(3)) verify(mTelephonyManager, times(3))
.addCarrierPrivilegesListener(anyInt(), any(HandlerExecutor.class), any()); .registerCarrierPrivilegesCallback(anyInt(), any(HandlerExecutor.class), any());
verify(mTelephonyManager, times(2)) verify(mTelephonyManager, times(2))
.addCarrierPrivilegesListener(eq(0), any(HandlerExecutor.class), any()); .registerCarrierPrivilegesCallback(eq(0), any(HandlerExecutor.class), any());
// Verify that this triggers a re-evaluation // Verify that this triggers a re-evaluation
verify(mCallback).onNewSnapshot(eq(buildExpectedSnapshot(TEST_PRIVILEGED_PACKAGES))); verify(mCallback).onNewSnapshot(eq(buildExpectedSnapshot(TEST_PRIVILEGED_PACKAGES)));
@@ -391,8 +391,8 @@ public class TelephonySubscriptionTrackerTest {
public void testOnCarrierPrivilegesChanged() throws Exception { public void testOnCarrierPrivilegesChanged() throws Exception {
setupReadySubIds(); setupReadySubIds();
final CarrierPrivilegesListener listener = getCarrierPrivilegesListeners().get(0); final CarrierPrivilegesCallback callback = getCarrierPrivilegesCallbacks().get(0);
listener.onCarrierPrivilegesChanged(Collections.emptyList(), new int[] {}); callback.onCarrierPrivilegesChanged(Collections.emptySet(), Collections.emptySet());
mTestLooper.dispatchAll(); mTestLooper.dispatchAll();
verify(mCallback).onNewSnapshot(eq(buildExpectedSnapshot(TEST_PRIVILEGED_PACKAGES))); verify(mCallback).onNewSnapshot(eq(buildExpectedSnapshot(TEST_PRIVILEGED_PACKAGES)));