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

Commit 8fcab358 authored by Jason Monk's avatar Jason Monk
Browse files

Fix weird case of multi cell icons

 - Don't auto-inflate cell icons
 - Move callback to better time (shouldn't get callbacks before
   setSubs)
 - Fix accidental callback in MobileSignalController constructor
 - Fix subscription listener to run on the right thread to avoid
   the thread issue allowing this bug

Bug: 21504138
Change-Id: Ie1adf8eb05e1042245eead5354b29b314a2e0aae
parent bee7245c
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -224,7 +224,10 @@ public class SignalClusterView
    public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
            int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
            String description, boolean isWide, int subId) {
        PhoneState state = getOrInflateState(subId);
        PhoneState state = getState(subId);
        if (state == null) {
            return;
        }
        state.mMobileVisible = statusIcon.visible && !mBlockMobile;
        state.mMobileStrengthId = statusIcon.icon;
        state.mMobileTypeId = statusType;
@@ -281,13 +284,14 @@ public class SignalClusterView
        return true;
    }

    private PhoneState getOrInflateState(int subId) {
    private PhoneState getState(int subId) {
        for (PhoneState state : mPhoneStates) {
            if (state.mSubId == subId) {
                return state;
            }
        }
        return inflatePhoneState(subId);
        Log.e(TAG, "Unexpected subscription " + subId);
        return null;
    }

    private PhoneState inflatePhoneState(int subId) {
+1 −1
Original line number Diff line number Diff line
@@ -291,6 +291,7 @@ public class MobileSignalController extends SignalController<
            notifyListenersIfNecessary();
        } else if (action.equals(TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) {
            updateDataSim();
            notifyListenersIfNecessary();
        }
    }

@@ -308,7 +309,6 @@ public class MobileSignalController extends SignalController<
            // for long.
            mCurrentState.dataSim = true;
        }
        notifyListenersIfNecessary();
    }

    /**
+11 −5
Original line number Diff line number Diff line
@@ -110,6 +110,8 @@ public class NetworkControllerImpl extends BroadcastReceiver
    // The current user ID.
    private int mCurrentUserId;

    private OnSubscriptionsChangedListener mSubscriptionListener;

    // Handler that all broadcasts are received on.
    private final Handler mReceiverHandler;
    // Handler that all callbacks are made on.
@@ -179,6 +181,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
        for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) {
            mobileSignalController.registerListener();
        }
        if (mSubscriptionListener == null) {
            mSubscriptionListener = new SubListener();
        }
        mSubscriptionManager.addOnSubscriptionsChangedListener(mSubscriptionListener);

        // broadcasts
@@ -422,7 +427,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
                        : lhs.getSimSlotIndex() - rhs.getSimSlotIndex();
            }
        });
        mCallbackHandler.setSubs(subscriptions);
        mCurrentSubscriptions = subscriptions;

        HashMap<Integer, MobileSignalController> cachedControllers =
@@ -455,6 +459,9 @@ public class NetworkControllerImpl extends BroadcastReceiver
                cachedControllers.get(key).unregisterListener();
            }
        }
        mCallbackHandler.setSubs(subscriptions);
        notifyAllListeners();

        // There may be new MobileSignalControllers around, make sure they get the current
        // inet condition and airplane mode.
        pushConnectivityToSignals();
@@ -724,13 +731,12 @@ public class NetworkControllerImpl extends BroadcastReceiver
        return info;
    }

    private final OnSubscriptionsChangedListener mSubscriptionListener =
            new OnSubscriptionsChangedListener() {
    private class SubListener extends OnSubscriptionsChangedListener {
        @Override
        public void onSubscriptionsChanged() {
            updateMobileControllers();
        };
    };
        }
    }

    /**
     * Used to register listeners from the BG Looper, this way the PhoneStateListeners that