Merge "Update TelephonySubscriptionTracker to use new CPCallback interface"
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