From 73e1555feaad27596a5858808a7a5e32debcc8b0 Mon Sep 17 00:00:00 2001 From: Rambo Wang Date: Thu, 24 Feb 2022 19:32:59 -0800 Subject: [PATCH] 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 Merged-In: I58dbbc4b7b135781bc5f4b5bc35b29075fc6a619 (cherry picked from commit 374f0045baa36ec412003e9397b9a214c0684de9) --- .../vcn/TelephonySubscriptionTracker.java | 40 +++++++++---------- .../vcn/TelephonySubscriptionTrackerTest.java | 40 +++++++++---------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java b/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java index 30e261725a731..092853f298c21 100644 --- a/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java +++ b/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java @@ -39,7 +39,7 @@ import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.TelephonyCallback; import android.telephony.TelephonyManager; -import android.telephony.TelephonyManager.CarrierPrivilegesListener; +import android.telephony.TelephonyManager.CarrierPrivilegesCallback; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Slog; @@ -98,8 +98,7 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver { @NonNull private final OnSubscriptionsChangedListener mSubscriptionChangedListener; @NonNull - private final List mCarrierPrivilegesChangedListeners = - new ArrayList<>(); + private final List mCarrierPrivilegesCallbacks = new ArrayList<>(); @NonNull private TelephonySubscriptionSnapshot mCurrentSnapshot; @@ -151,20 +150,21 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver { executor, mSubscriptionChangedListener); 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 int modemCount = mTelephonyManager.getActiveModemCount(); try { for (int i = 0; i < modemCount; i++) { - CarrierPrivilegesListener carrierPrivilegesListener = - new CarrierPrivilegesListener() { + CarrierPrivilegesCallback carrierPrivilegesCallback = + new CarrierPrivilegesCallback() { @Override public void onCarrierPrivilegesChanged( - @NonNull List privilegedPackageNames, - @NonNull int[] privilegedUids) { + @NonNull Set privilegedPackageNames, + @NonNull Set privilegedUids) { // Re-trigger the synchronous check (which is also very cheap due // to caching in CarrierPrivilegesTracker). This allows consistency // with the onSubscriptionsChangedListener and broadcasts. @@ -172,9 +172,9 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver { } }; - mTelephonyManager.addCarrierPrivilegesListener( - i, executor, carrierPrivilegesListener); - mCarrierPrivilegesChangedListeners.add(carrierPrivilegesListener); + mTelephonyManager.registerCarrierPrivilegesCallback( + i, executor, carrierPrivilegesCallback); + mCarrierPrivilegesCallbacks.add(carrierPrivilegesCallback); } } catch (IllegalArgumentException e) { Slog.wtf(TAG, "Encounted exception registering carrier privileges listeners", e); @@ -191,15 +191,15 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver { mSubscriptionManager.removeOnSubscriptionsChangedListener(mSubscriptionChangedListener); mTelephonyManager.unregisterTelephonyCallback(mActiveDataSubIdListener); - unregisterCarrierPrivilegesListeners(); + unregisterCarrierPrivilegesCallbacks(); } - private void unregisterCarrierPrivilegesListeners() { - for (CarrierPrivilegesListener carrierPrivilegesListener : - mCarrierPrivilegesChangedListeners) { - mTelephonyManager.removeCarrierPrivilegesListener(carrierPrivilegesListener); + private void unregisterCarrierPrivilegesCallbacks() { + for (CarrierPrivilegesCallback carrierPrivilegesCallback : + mCarrierPrivilegesCallbacks) { + mTelephonyManager.unregisterCarrierPrivilegesCallback(carrierPrivilegesCallback); } - mCarrierPrivilegesChangedListeners.clear(); + mCarrierPrivilegesCallbacks.clear(); } /** @@ -283,7 +283,7 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver { } private void handleActionMultiSimConfigChanged(Context context, Intent intent) { - unregisterCarrierPrivilegesListeners(); + unregisterCarrierPrivilegesCallbacks(); // Clear invalid slotIds from the mReadySubIdsBySlotId map. final int modemCount = mTelephonyManager.getActiveModemCount(); @@ -296,7 +296,7 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver { } } - registerCarrierPrivilegesListeners(); + registerCarrierPrivilegesCallbacks(); handleSubscriptionsChanged(); } diff --git a/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java b/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java index 7b1f7a5995196..b673957354265 100644 --- a/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java +++ b/tests/vcn/java/com/android/server/vcn/TelephonySubscriptionTrackerTest.java @@ -60,7 +60,7 @@ import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.TelephonyCallback; import android.telephony.TelephonyManager; -import android.telephony.TelephonyManager.CarrierPrivilegesListener; +import android.telephony.TelephonyManager.CarrierPrivilegesCallback; import android.util.ArrayMap; import android.util.ArraySet; @@ -187,11 +187,11 @@ public class TelephonySubscriptionTrackerTest { return captor.getValue(); } - private List getCarrierPrivilegesListeners() { - final ArgumentCaptor captor = - ArgumentCaptor.forClass(CarrierPrivilegesListener.class); + private List getCarrierPrivilegesCallbacks() { + final ArgumentCaptor captor = + ArgumentCaptor.forClass(CarrierPrivilegesCallback.class); verify(mTelephonyManager, atLeastOnce()) - .addCarrierPrivilegesListener(anyInt(), any(), captor.capture()); + .registerCarrierPrivilegesCallback(anyInt(), any(), captor.capture()); return captor.getAllValues(); } @@ -270,12 +270,12 @@ public class TelephonySubscriptionTrackerTest { assertNotNull(getOnSubscriptionsChangedListener()); verify(mTelephonyManager, times(2)) - .addCarrierPrivilegesListener(anyInt(), any(HandlerExecutor.class), any()); + .registerCarrierPrivilegesCallback(anyInt(), any(HandlerExecutor.class), any()); verify(mTelephonyManager) - .addCarrierPrivilegesListener(eq(0), any(HandlerExecutor.class), any()); + .registerCarrierPrivilegesCallback(eq(0), any(HandlerExecutor.class), any()); verify(mTelephonyManager) - .addCarrierPrivilegesListener(eq(1), any(HandlerExecutor.class), any()); - assertEquals(2, getCarrierPrivilegesListeners().size()); + .registerCarrierPrivilegesCallback(eq(1), any(HandlerExecutor.class), any()); + assertEquals(2, getCarrierPrivilegesCallbacks().size()); } @Test @@ -287,10 +287,10 @@ public class TelephonySubscriptionTrackerTest { final OnSubscriptionsChangedListener listener = getOnSubscriptionsChangedListener(); verify(mSubscriptionManager).removeOnSubscriptionsChangedListener(eq(listener)); - for (CarrierPrivilegesListener carrierPrivilegesListener : - getCarrierPrivilegesListeners()) { + for (CarrierPrivilegesCallback carrierPrivilegesCallback : + getCarrierPrivilegesCallbacks()) { verify(mTelephonyManager) - .removeCarrierPrivilegesListener(eq(carrierPrivilegesListener)); + .unregisterCarrierPrivilegesCallback(eq(carrierPrivilegesCallback)); } } @@ -303,15 +303,15 @@ public class TelephonySubscriptionTrackerTest { mTelephonySubscriptionTracker.setReadySubIdsBySlotId(readySubIdsBySlotId); doReturn(1).when(mTelephonyManager).getActiveModemCount(); - List carrierPrivilegesListeners = - getCarrierPrivilegesListeners(); + List carrierPrivilegesCallbacks = + getCarrierPrivilegesCallbacks(); mTelephonySubscriptionTracker.onReceive(mContext, buildTestMultiSimConfigBroadcastIntent()); mTestLooper.dispatchAll(); - for (CarrierPrivilegesListener carrierPrivilegesListener : carrierPrivilegesListeners) { + for (CarrierPrivilegesCallback carrierPrivilegesCallback : carrierPrivilegesCallbacks) { verify(mTelephonyManager) - .removeCarrierPrivilegesListener(eq(carrierPrivilegesListener)); + .unregisterCarrierPrivilegesCallback(eq(carrierPrivilegesCallback)); } // 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 // (2 previously registered during startup, for slots 0 & 1) verify(mTelephonyManager, times(3)) - .addCarrierPrivilegesListener(anyInt(), any(HandlerExecutor.class), any()); + .registerCarrierPrivilegesCallback(anyInt(), any(HandlerExecutor.class), any()); 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(mCallback).onNewSnapshot(eq(buildExpectedSnapshot(TEST_PRIVILEGED_PACKAGES))); @@ -391,8 +391,8 @@ public class TelephonySubscriptionTrackerTest { public void testOnCarrierPrivilegesChanged() throws Exception { setupReadySubIds(); - final CarrierPrivilegesListener listener = getCarrierPrivilegesListeners().get(0); - listener.onCarrierPrivilegesChanged(Collections.emptyList(), new int[] {}); + final CarrierPrivilegesCallback callback = getCarrierPrivilegesCallbacks().get(0); + callback.onCarrierPrivilegesChanged(Collections.emptySet(), Collections.emptySet()); mTestLooper.dispatchAll(); verify(mCallback).onNewSnapshot(eq(buildExpectedSnapshot(TEST_PRIVILEGED_PACKAGES)));