Update TelephonySubscriptionTracker to use new CPCallback interface
CarrierPrivilegesListener is renamed as CarrierPrivilegesCallback. The previous callback onCarrierPrivilegesChanged is also reshaped to provide Set of package names and UIDs. This is the minimum change to remove dependency on CPListener. A follow-up CL can simplify the logic here with the new onCarrierServiceChanged API if TelephonySubscriptionTracker only cares about carrier service. Bug: 216549778 Test: atest TelephonySubscriptionTrackerTest Change-Id: I58dbbc4b7b135781bc5f4b5bc35b29075fc6a619
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)));
|
||||||
|
|||||||
Reference in New Issue
Block a user