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

Commit 1a6e89c7 authored by Rambo Wang's avatar Rambo Wang
Browse files

Migrate TelephonyManagerShimImpl to new CPCallback interface

CarrierPrivilegesListener is renamed to CarrierPrivilegesCallback,
with new API introduced to support carrier service change and
better API surface.

This CL introduces minimum change to remove dependency on the deprecated
interface. A follow up CL will refactor thoroughly with the new
carrier service change API.

Bug: 216549778
Test: make
Change-Id: I20de036e0ccff45013d2c54213c129d1a013efe0
parent 059a174b
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -165,6 +165,9 @@ java_library {
    srcs: [
    srcs: [
        "apishim/33/**/*.java",
        "apishim/33/**/*.java",
    ],
    ],
    static_libs: [
        "net-utils-framework-common",
    ],
    libs: [
    libs: [
        "NetworkStackShimsCommon",
        "NetworkStackShimsCommon",
        "NetworkStackApi29Shims",
        "NetworkStackApi29Shims",
+21 −11
Original line number Original line Diff line number Diff line
@@ -16,9 +16,11 @@


package com.android.networkstack.apishim;
package com.android.networkstack.apishim;


import static com.android.net.module.util.CollectionUtils.toIntArray;

import android.os.Build;
import android.os.Build;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager.CarrierPrivilegesListener;
import android.telephony.TelephonyManager.CarrierPrivilegesCallback;


import androidx.annotation.RequiresApi;
import androidx.annotation.RequiresApi;


@@ -27,6 +29,7 @@ import com.android.networkstack.apishim.common.UnsupportedApiLevelException;


import java.util.HashMap;
import java.util.HashMap;
import java.util.List;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Executor;
import java.util.concurrent.Executor;


/**
/**
@@ -35,34 +38,41 @@ import java.util.concurrent.Executor;
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
public class TelephonyManagerShimImpl extends
public class TelephonyManagerShimImpl extends
        com.android.networkstack.apishim.api31.TelephonyManagerShimImpl {
        com.android.networkstack.apishim.api31.TelephonyManagerShimImpl {
    private HashMap<CarrierPrivilegesListenerShim, CarrierPrivilegesListener> mListenerMap =
    private HashMap<CarrierPrivilegesListenerShim, CarrierPrivilegesCallback> mListenerMap =
            new HashMap<>();
            new HashMap<>();
    public TelephonyManagerShimImpl(TelephonyManager telephonyManager) {
    public TelephonyManagerShimImpl(TelephonyManager telephonyManager) {
        super(telephonyManager);
        super(telephonyManager);
    }
    }


    /** See android.telephony.TelephonyManager#addCarrierPrivilegesListener */
    /** See android.telephony.TelephonyManager#registerCarrierPrivilegesCallback */
    public void addCarrierPrivilegesListener(
    public void addCarrierPrivilegesListener(
            int logicalSlotIndex,
            int logicalSlotIndex,
            Executor executor,
            Executor executor,
            CarrierPrivilegesListenerShim listener)
            CarrierPrivilegesListenerShim listener)
            throws UnsupportedApiLevelException {
            throws UnsupportedApiLevelException {
        CarrierPrivilegesListener carrierPrivilegesListener = new CarrierPrivilegesListener() {
        CarrierPrivilegesCallback carrierPrivilegesCallback = new CarrierPrivilegesCallback() {
            public void onCarrierPrivilegesChanged(
            public void onCarrierPrivilegesChanged(
                    List<String> privilegedPackageNames,
                    Set<String> privilegedPackageNames,
                    int[] privilegedUids) {
                    Set<Integer> privilegedUids) {
                listener.onCarrierPrivilegesChanged(privilegedPackageNames, privilegedUids);
                // TODO(b/221306368): Rebuild thoroughly based on onCarrierServiceChanged interface
                // This is the minimum change to remove the dependency on the obsoleted API in
                // CarrierPrivilegesListener. A follow-up CL should refactor Connectivity modules
                // with carrier service change API instead.
                List<String> pkgNames = List.copyOf(privilegedPackageNames);
                int[] pkgUids = toIntArray(privilegedUids);
                listener.onCarrierPrivilegesChanged(pkgNames, pkgUids);
            }
            }
        };
        };
        mTm.addCarrierPrivilegesListener(logicalSlotIndex, executor, carrierPrivilegesListener);
        mTm.registerCarrierPrivilegesCallback(logicalSlotIndex, executor,
        mListenerMap.put(listener, carrierPrivilegesListener);
                carrierPrivilegesCallback);
        mListenerMap.put(listener, carrierPrivilegesCallback);
    }
    }


    /** See android.telephony.TelephonyManager#addCarrierPrivilegesListener */
    /** See android.telephony.TelephonyManager#unregisterCarrierPrivilegesCallback */
    public void removeCarrierPrivilegesListener(
    public void removeCarrierPrivilegesListener(
            CarrierPrivilegesListenerShim listener)
            CarrierPrivilegesListenerShim listener)
            throws UnsupportedApiLevelException {
            throws UnsupportedApiLevelException {
        mTm.removeCarrierPrivilegesListener(mListenerMap.get(listener));
        mTm.unregisterCarrierPrivilegesCallback(mListenerMap.get(listener));
        mListenerMap.remove(listener);
        mListenerMap.remove(listener);
    }
    }