Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fcda869c authored by Yan Yan's avatar Yan Yan Committed by Gerrit Code Review
Browse files

Merge "Expose getPackagesWithCarrierPrivileges as @SystemApi" into main

parents 8a56fce8 baf1bf77
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -597,6 +597,7 @@ package android.telephony {


  public class TelephonyManager {
  public class TelephonyManager {
    method @NonNull public static int[] getAllNetworkTypes();
    method @NonNull public static int[] getAllNetworkTypes();
    method @FlaggedApi("android.os.mainline_vcn_platform_api") @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Set<java.lang.String> getPackagesWithCarrierPrivileges();
  }
  }


}
}
+15 −4
Original line number Original line Diff line number Diff line
@@ -10586,20 +10586,31 @@ public class TelephonyManager {
        return null;
        return null;
    }
    }
    /** @hide */
    /**
     * Get the names of packages with carrier privileges for the current subscription.
     *
     * @throws UnsupportedOperationException If the device does not have {@link
     *     PackageManager#FEATURE_TELEPHONY_SUBSCRIPTION}
     * @hide
     */
    @FlaggedApi(android.os.Flags.FLAG_MAINLINE_VCN_PLATFORM_API)
    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
    @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
    @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
    public List<String> getPackagesWithCarrierPrivileges() {
    @RequiresFeature(PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION)
    @NonNull
    public Set<String> getPackagesWithCarrierPrivileges() {
        final Set<String> result = new HashSet<>();
        try {
        try {
            ITelephony telephony = getITelephony();
            ITelephony telephony = getITelephony();
            if (telephony != null) {
            if (telephony != null) {
                return telephony.getPackagesWithCarrierPrivileges(getPhoneId());
                result.addAll(telephony.getPackagesWithCarrierPrivileges(getPhoneId()));
            }
            }
        } catch (RemoteException ex) {
        } catch (RemoteException ex) {
            Rlog.e(TAG, "getPackagesWithCarrierPrivileges RemoteException", ex);
            Rlog.e(TAG, "getPackagesWithCarrierPrivileges RemoteException", ex);
        } catch (NullPointerException ex) {
        } catch (NullPointerException ex) {
            Rlog.e(TAG, "getPackagesWithCarrierPrivileges NPE", ex);
            Rlog.e(TAG, "getPackagesWithCarrierPrivileges NPE", ex);
        }
        }
        return Collections.EMPTY_LIST;
        return result;
    }
    }
    /**
    /**
+5 −5
Original line number Original line Diff line number Diff line
@@ -206,7 +206,7 @@ public class TelephonySubscriptionTrackerTest {
                .getAllSubscriptionInfoList();
                .getAllSubscriptionInfoList();


        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(anyInt());
        doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(anyInt());
        setPrivilegedPackagesForMock(Collections.singletonList(PACKAGE_NAME));
        setPrivilegedPackagesForMock(Collections.singleton(PACKAGE_NAME));
    }
    }


    private IntentFilter getIntentFilter() {
    private IntentFilter getIntentFilter() {
@@ -293,7 +293,7 @@ public class TelephonySubscriptionTrackerTest {
                Collections.singletonMap(TEST_SUBSCRIPTION_ID_1, TEST_CARRIER_CONFIG_WRAPPER));
                Collections.singletonMap(TEST_SUBSCRIPTION_ID_1, TEST_CARRIER_CONFIG_WRAPPER));
    }
    }


    private void setPrivilegedPackagesForMock(@NonNull List<String> privilegedPackages) {
    private void setPrivilegedPackagesForMock(@NonNull Set<String> privilegedPackages) {
        doReturn(privilegedPackages).when(mTelephonyManager).getPackagesWithCarrierPrivileges();
        doReturn(privilegedPackages).when(mTelephonyManager).getPackagesWithCarrierPrivileges();
    }
    }


@@ -390,7 +390,7 @@ public class TelephonySubscriptionTrackerTest {
    @Test
    @Test
    public void testOnSubscriptionsChangedFired_onActiveSubIdsChanged() throws Exception {
    public void testOnSubscriptionsChangedFired_onActiveSubIdsChanged() throws Exception {
        setupReadySubIds();
        setupReadySubIds();
        setPrivilegedPackagesForMock(Collections.emptyList());
        setPrivilegedPackagesForMock(Collections.emptySet());


        doReturn(TEST_SUBSCRIPTION_ID_2).when(mDeps).getActiveDataSubscriptionId();
        doReturn(TEST_SUBSCRIPTION_ID_2).when(mDeps).getActiveDataSubscriptionId();
        final ActiveDataSubscriptionIdListener listener = getActiveDataSubscriptionIdListener();
        final ActiveDataSubscriptionIdListener listener = getActiveDataSubscriptionIdListener();
@@ -411,7 +411,7 @@ public class TelephonySubscriptionTrackerTest {
    public void testOnSubscriptionsChangedFired_WithReadySubidsNoPrivilegedPackages()
    public void testOnSubscriptionsChangedFired_WithReadySubidsNoPrivilegedPackages()
            throws Exception {
            throws Exception {
        setupReadySubIds();
        setupReadySubIds();
        setPrivilegedPackagesForMock(Collections.emptyList());
        setPrivilegedPackagesForMock(Collections.emptySet());


        final OnSubscriptionsChangedListener listener = getOnSubscriptionsChangedListener();
        final OnSubscriptionsChangedListener listener = getOnSubscriptionsChangedListener();
        listener.onSubscriptionsChanged();
        listener.onSubscriptionsChanged();
@@ -567,7 +567,7 @@ public class TelephonySubscriptionTrackerTest {
        verify(mCallback).onNewSnapshot(eq(buildExpectedSnapshot(TEST_PRIVILEGED_PACKAGES)));
        verify(mCallback).onNewSnapshot(eq(buildExpectedSnapshot(TEST_PRIVILEGED_PACKAGES)));


        // Simulate a loss of carrier privileges
        // Simulate a loss of carrier privileges
        setPrivilegedPackagesForMock(Collections.emptyList());
        setPrivilegedPackagesForMock(Collections.emptySet());
        listener.onSubscriptionsChanged();
        listener.onSubscriptionsChanged();
        mTestLooper.dispatchAll();
        mTestLooper.dispatchAll();