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

Commit b8944a97 authored by Cody Kesting's avatar Cody Kesting Committed by Automerger Merge Worker
Browse files

Use CarrierPrivilegesTracker in DataConnection. am: f9334e8f

Change-Id: Ie536a539b7e5fbdbb51e6892a24553a23614030e
parents b3c22ece f9334e8f
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -136,7 +136,7 @@ public class CarrierPrivilegesTracker extends Handler {

    // Map of PackageName -> UIDs for that Package
    private final Map<String, Set<Integer>> mCachedUids;
    private int[] mPrivilegedUids;
    protected int[] mPrivilegedUids;

    private final BroadcastReceiver mIntentReceiver =
            new BroadcastReceiver() {
@@ -198,10 +198,11 @@ public class CarrierPrivilegesTracker extends Handler {
            @NonNull Looper looper, @NonNull Phone phone, @NonNull Context context) {
        super(looper);
        mContext = context;
        mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
        mPackageManager = context.getSystemService(PackageManager.class);
        mUserManager = context.getSystemService(UserManager.class);
        mTelephonyManager = context.getSystemService(TelephonyManager.class);
        mCarrierConfigManager =
                (CarrierConfigManager) mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
        mPackageManager = mContext.getPackageManager();
        mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
        mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
        mPhone = phone;

        IntentFilter filter = new IntentFilter();
+11 −0
Original line number Diff line number Diff line
@@ -417,6 +417,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {

    private boolean mUnitTestMode;

    private final CarrierPrivilegesTracker mCarrierPrivilegesTracker;

    public IccRecords getIccRecords() {
        return mIccRecords.get();
    }
@@ -538,6 +540,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        mIsVoiceCapable = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE))
                .isVoiceCapable();

        mCarrierPrivilegesTracker = new CarrierPrivilegesTracker(mLooper, this, mContext);

        /**
         *  Some RIL's don't always send RIL_UNSOL_CALL_RING so it needs
         *  to be generated locally. Ideally all ring tones should be loops
@@ -4237,6 +4241,11 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        return "";
    }

    /** @hide */
    public CarrierPrivilegesTracker getCarrierPrivilegesTracker() {
        return mCarrierPrivilegesTracker;
    }

    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println("Phone: subId=" + getSubId());
        pw.println(" mPhoneId=" + mPhoneId);
@@ -4274,6 +4283,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        pw.println(" isInEmergencySmsMode=" + isInEmergencySmsMode());
        pw.println(" isEcmCanceledForEmergency=" + isEcmCanceledForEmergency());
        pw.println(" service state=" + getServiceState());
        String privilegedUids = Arrays.toString(mCarrierPrivilegesTracker.mPrivilegedUids);
        pw.println(" administratorUids=" + privilegedUids);
        pw.flush();
        pw.println("++++++++++++++++++++++++++++++++");

+34 −2
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ import java.lang.annotation.RetentionPolicy;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Locale;
@@ -183,6 +184,8 @@ public class DataConnection extends StateMachine {

    private final LocalLog mHandoverLocalLog = new LocalLog(100);

    private int[] mAdministratorUids = new int[0];

    /**
     * Used internally for saving connecting parameters.
     */
@@ -330,8 +333,8 @@ public class DataConnection extends StateMachine {
    static final int EVENT_DATA_CONNECTION_METEREDNESS_CHANGED = BASE + 28;
    static final int EVENT_NR_FREQUENCY_CHANGED = BASE + 29;
    static final int EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED = BASE + 30;
    private static final int CMD_TO_STRING_COUNT =
            EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED - BASE + 1;
    static final int EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED = BASE + 31;
    private static final int CMD_TO_STRING_COUNT = EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED - BASE + 1;

    private static String[] sCmdToString = new String[CMD_TO_STRING_COUNT];
    static {
@@ -373,6 +376,8 @@ public class DataConnection extends StateMachine {
        sCmdToString[EVENT_NR_FREQUENCY_CHANGED - BASE] = "EVENT_NR_FREQUENCY_CHANGED";
        sCmdToString[EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED - BASE] =
                "EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED";
        sCmdToString[EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED - BASE] =
                "EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED";
    }
    // Convert cmd to string or null if unknown
    static String cmdToString(int cmd) {
@@ -1415,6 +1420,8 @@ public class DataConnection extends StateMachine {
                mNetworkInfo.getDetailedState() == NetworkInfo.DetailedState.SUSPENDED;
        result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED, !suspended);

        result.setAdministratorUids(mAdministratorUids);

        return result;
    }

@@ -1943,6 +1950,10 @@ public class DataConnection extends StateMachine {
            // tear down the connection through networkAgent unwanted callback if all requests for
            // this connection are going away.
            mRestrictedNetworkOverride = shouldRestrictNetwork();

            mPhone.getCarrierPrivilegesTracker()
                    .registerCarrierPrivilegesListener(
                            getHandler(), EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED, null);
        }
        @Override
        public boolean processMessage(Message msg) {
@@ -2032,6 +2043,12 @@ public class DataConnection extends StateMachine {
                    }
                    retVal = HANDLED;
                    break;
                case EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED:
                    AsyncResult asyncResult = (AsyncResult) msg.obj;
                    int[] administratorUids = (int[]) asyncResult.result;
                    mAdministratorUids = Arrays.copyOf(administratorUids, administratorUids.length);
                    retVal = HANDLED;
                    break;
                default:
                    if (VDBG) {
                        log("DcActivatingState not handled msg.what=" +
@@ -2207,6 +2224,8 @@ public class DataConnection extends StateMachine {

            TelephonyMetrics.getInstance().writeRilDataCallEvent(mPhone.getPhoneId(),
                    mCid, mApnSetting.getApnTypeBitmask(), RilDataCall.State.DISCONNECTED);

            mPhone.getCarrierPrivilegesTracker().unregisterCarrierPrivilegesListener(getHandler());
        }

        @Override
@@ -2527,6 +2546,19 @@ public class DataConnection extends StateMachine {
                    retVal = HANDLED;
                    break;
                }
                case EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED:
                    AsyncResult asyncResult = (AsyncResult) msg.obj;
                    int[] administratorUids = (int[]) asyncResult.result;
                    mAdministratorUids = Arrays.copyOf(administratorUids, administratorUids.length);

                    // Administrator UIDs changed, so update NetworkAgent with new
                    // NetworkCapabilities
                    if (mNetworkAgent != null) {
                        mNetworkAgent.sendNetworkCapabilities(
                                getNetworkCapabilities(), DataConnection.this);
                    }
                    retVal = HANDLED;
                    break;
                default:
                    if (VDBG) {
                        log("DcActiveState not handled msg.what=" + getWhatToString(msg.what));
+3 −0
Original line number Diff line number Diff line
@@ -278,6 +278,8 @@ public abstract class TelephonyTest {
    protected IccCard mIccCard;
    @Mock
    protected NetworkStatsManager mStatsManager;
    @Mock
    protected CarrierPrivilegesTracker mCarrierPrivilegesTracker;

    protected ActivityManager mActivityManager;
    protected ImsCallProfile mImsCallProfile;
@@ -495,6 +497,7 @@ public abstract class TelephonyTest {
        doReturn(mTransportManager).when(mPhone).getTransportManager();
        doReturn(mDataEnabledSettings).when(mPhone).getDataEnabledSettings();
        doReturn(mDcTracker).when(mPhone).getDcTracker(anyInt());
        doReturn(mCarrierPrivilegesTracker).when(mPhone).getCarrierPrivilegesTracker();
        mIccSmsInterfaceManager.mDispatchersController = mSmsDispatchersController;

        //mUiccController