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

Commit 0288de0e authored by Jason Monk's avatar Jason Monk
Browse files

Fix data disabled icon from not showing in status bar

The NetworkController seemed to think the user wasn't set up since
the DeviceProvisionedController didn't send an initial callback
on add.

Also add some extra listening to data disabled state to avoid race
conditions there.

Change-Id: I17f759894a283da08eb0da7ceb5181355c8f4d55
Fixes: 35708363
Fixes: 35632846
Test: runtest systemui
parent 0a4cf4b5
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -26,7 +26,9 @@ public interface DeviceProvisionedController extends CallbackController<DevicePr

    interface DeviceProvisionedListener {
        default void onDeviceProvisionedChanged() { }
        default void onUserSwitched() { }
        default void onUserSwitched() {
            onUserSetupChanged();
        }
        default void onUserSetupChanged() { }
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -66,6 +66,8 @@ public class DeviceProvisionedControllerImpl extends CurrentUserTracker implemen
        if (mListeners.size() == 1) {
            startListening(getCurrentUser());
        }
        listener.onUserSetupChanged();
        listener.onDeviceProvisionedChanged();
    }

    @Override
+21 −5
Original line number Diff line number Diff line
@@ -17,8 +17,11 @@ package com.android.systemui.statusbar.policy;

import android.content.Context;
import android.content.Intent;
import android.database.ContentObserver;
import android.net.NetworkCapabilities;
import android.os.Handler;
import android.os.Looper;
import android.provider.Settings.Global;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
@@ -49,6 +52,7 @@ public class MobileSignalController extends SignalController<
    private final SubscriptionDefaults mDefaults;
    private final String mNetworkNameDefault;
    private final String mNetworkNameSeparator;
    private final ContentObserver mObserver;
    @VisibleForTesting
    final PhoneStateListener mPhoneStateListener;
    // Save entire info for logging, we only use the id.
@@ -97,6 +101,12 @@ public class MobileSignalController extends SignalController<
        mLastState.iconGroup = mCurrentState.iconGroup = mDefaultIcons;
        // Get initial data sim state.
        updateDataSim();
        mObserver = new ContentObserver(new Handler(receiverLooper)) {
            @Override
            public void onChange(boolean selfChange) {
                updateTelephony();
            }
        };
    }

    public void setConfiguration(Config config) {
@@ -144,6 +154,11 @@ public class MobileSignalController extends SignalController<
                        | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
                        | PhoneStateListener.LISTEN_DATA_ACTIVITY
                        | PhoneStateListener.LISTEN_CARRIER_NETWORK_CHANGE);
        mContext.getContentResolver().registerContentObserver(Global.getUriFor(Global.MOBILE_DATA),
                true, mObserver);
        mContext.getContentResolver().registerContentObserver(Global.getUriFor(
                Global.MOBILE_DATA + mSubscriptionInfo.getSubscriptionId()),
                true, mObserver);
    }

    /**
@@ -151,6 +166,7 @@ public class MobileSignalController extends SignalController<
     */
    public void unregisterListener() {
        mPhone.listen(mPhoneStateListener, 0);
        mContext.getContentResolver().unregisterContentObserver(mObserver);
    }

    /**
+0 −1
Original line number Diff line number Diff line
@@ -43,7 +43,6 @@ public interface NetworkController extends CallbackController<SignalCallback>, D

    void addEmergencyListener(EmergencyListener listener);
    void removeEmergencyListener(EmergencyListener listener);
    void setUserSetupComplete(boolean userSetup);
    boolean hasEmergencyCryptKeeperText();
    boolean isRadioOn();

+3 −9
Original line number Diff line number Diff line
@@ -551,17 +551,11 @@ public class NetworkControllerImpl extends BroadcastReceiver
        updateAirplaneMode(true /* force */);
    }

    public void setUserSetupComplete(final boolean userSetup) {
        mReceiverHandler.post(new Runnable() {
            @Override
            public void run() {
                handleSetUserSetupComplete(userSetup);
            }
        });
    private void setUserSetupComplete(final boolean userSetup) {
        mReceiverHandler.post(() -> handleSetUserSetupComplete(userSetup));
    }

    @VisibleForTesting
    void handleSetUserSetupComplete(boolean userSetup) {
    private void handleSetUserSetupComplete(boolean userSetup) {
        mUserSetup = userSetup;
        for (MobileSignalController controller : mMobileSignalControllers.values()) {
            controller.setUserSetupComplete(mUserSetup);
Loading