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

Commit 57b39e3e authored by Yifan Bai's avatar Yifan Bai Committed by Yifan Bai
Browse files

Fix issues of different phone objects sharing same mConnectionApns list.

Due to different phone objects are sharing same mConnectionApns list, in
some situation both SIMs will show data connection icons mistakenly. To
fix, create different mConnectionApns list to track different phone
objects.

Change-Id: I1b176b62e9acf3cbe52cc38fb437570b88e03ff8
parent 23580439
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -159,7 +159,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {

    private String[] mDataConnectionApn;

    private ArrayList<String> mConnectedApns;
    private ArrayList<String>[] mConnectedApns;

    private LinkProperties[] mDataConnectionLinkProperties;

@@ -292,11 +292,11 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {

        mContext = context;
        mBatteryStats = BatteryStatsService.getService();
        mConnectedApns = new ArrayList<String>();

        int numPhones = TelephonyManager.getDefault().getPhoneCount();
        if (DBG) log("TelephonyRegistor: ctor numPhones=" + numPhones);
        mNumPhones = numPhones;
        mConnectedApns = new ArrayList[numPhones];
        mCallState = new int[numPhones];
        mDataActivity = new int[numPhones];
        mDataConnectionState = new int[numPhones];
@@ -327,6 +327,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
            mDataConnectionApn[i] =  "";
            mCellLocation[i] = new Bundle();
            mCellInfo.add(i, null);
            mConnectedApns[i] = new ArrayList<String>();
        }

        // Note that location can be null for non-phone builds like
@@ -336,7 +337,6 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
                location.fillInNotifierBundle(mCellLocation[i]);
            }
        }
        mConnectedApns = new ArrayList<String>();

        mAppOps = mContext.getSystemService(AppOpsManager.class);
    }
@@ -1059,16 +1059,16 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
            if (validatePhoneId(phoneId)) {
                boolean modified = false;
                if (state == TelephonyManager.DATA_CONNECTED) {
                    if (!mConnectedApns.contains(apnType)) {
                        mConnectedApns.add(apnType);
                    if (!mConnectedApns[phoneId].contains(apnType)) {
                        mConnectedApns[phoneId].add(apnType);
                        if (mDataConnectionState[phoneId] != state) {
                            mDataConnectionState[phoneId] = state;
                            modified = true;
                        }
                    }
                } else {
                    if (mConnectedApns.remove(apnType)) {
                        if (mConnectedApns.isEmpty()) {
                    if (mConnectedApns[phoneId].remove(apnType)) {
                        if (mConnectedApns[phoneId].isEmpty()) {
                            mDataConnectionState[phoneId] = state;
                            modified = true;
                        } else {