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

Commit 1c040dbe authored by Jason Monk's avatar Jason Monk
Browse files

Fix crash in NetworkControllerImpl

Happened due to multiple entry points of configuration changes
running on different threads.

 - Remove the unneeded listening for configuration broadcasts
 - Make the handling for configuration changes happen on the right
   thread
 - Happen to fix the tests :)

Bug: 22560859
Change-Id: I194b4fa233f0a8a33c4ac3252ddec70a93822337
parent 29cf9aea
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2910,7 +2910,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        updateRowStates();
        mIconController.updateResources();
        mScreenPinningRequest.onConfigurationChanged();
        mNetworkController.handleConfigurationChanged();
        mNetworkController.onConfigurationChanged();
    }

    @Override
+11 −4
Original line number Diff line number Diff line
@@ -197,7 +197,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
        filter.addAction(TelephonyIntents.SPN_STRINGS_UPDATED_ACTION);
        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        filter.addAction(ConnectivityManager.INET_CONDITION_ACTION);
        filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
        filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
        mContext.registerReceiver(this, filter, null, mReceiverHandler);
        mListening = true;
@@ -339,8 +338,6 @@ public class NetworkControllerImpl extends BroadcastReceiver
        if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION) ||
                action.equals(ConnectivityManager.INET_CONDITION_ACTION)) {
            updateConnectivity();
        } else if (action.equals(Intent.ACTION_CONFIGURATION_CHANGED)) {
            handleConfigurationChanged();
        } else if (action.equals(Intent.ACTION_AIRPLANE_MODE_CHANGED)) {
            refreshLocale();
            updateAirplaneMode(false);
@@ -373,8 +370,18 @@ public class NetworkControllerImpl extends BroadcastReceiver
        }
    }

    public void handleConfigurationChanged() {
    public void onConfigurationChanged() {
        mConfig = Config.readConfig(mContext);
        mReceiverHandler.post(new Runnable() {
            @Override
            public void run() {
                handleConfigurationChanged();
            }
        });
    }

    @VisibleForTesting
    void handleConfigurationChanged() {
        for (MobileSignalController mobileSignalController : mMobileSignalControllers.values()) {
            mobileSignalController.setConfiguration(mConfig);
        }