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

Commit e7515466 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "The UI is not immediately updated" into sc-dev

parents 09736179 c0b8f62b
Loading
Loading
Loading
Loading
+19 −17
Original line number Diff line number Diff line
@@ -43,8 +43,6 @@ import com.android.settingslib.mobile.MobileMappings;
import com.android.settingslib.mobile.MobileMappings.Config;

import java.util.Collections;
import java.util.concurrent.Executor;


/**
 * BackgroundWorker for Provider Model slice.
@@ -63,6 +61,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements
    private DataConnectivityListener mConnectivityListener;
    private int mDefaultDataSubid = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    private final Context mContext;
    final Handler mHandler;
    @VisibleForTesting
    final PhoneStateListener mPhoneStateListener;
    private TelephonyManager mTelephonyManager;
@@ -76,15 +75,15 @@ public class NetworkProviderWorker extends WifiScanWorker implements
    public NetworkProviderWorker(Context context, Uri uri) {
        super(context, uri);
        // Mobile data worker
        final Handler handler = new Handler(Looper.getMainLooper());
        mMobileDataObserver = new DataContentObserver(handler, this);
        mHandler = new Handler(Looper.getMainLooper());
        mMobileDataObserver = new DataContentObserver(mHandler, this);

        mContext = context;
        mDefaultDataSubid = getDefaultDataSubscriptionId();

        mTelephonyManager = mContext.getSystemService(
                TelephonyManager.class).createForSubscriptionId(mDefaultDataSubid);
        mPhoneStateListener = new NetworkProviderPhoneStateListener(handler::post);
        mPhoneStateListener = new NetworkProviderPhoneStateListener();
        mSubscriptionsListener = new SubscriptionsChangeListener(context, this);
        mDataEnabledListener = new MobileDataEnabledListener(context, this);
        mConnectivityListener = new DataConnectivityListener(context, this);
@@ -102,9 +101,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements
        mDataEnabledListener.start(mDefaultDataSubid);
        mConnectivityListener.start();
        mSignalStrengthListener.resume();
        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE
                | PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED);

        mTelephonyManager.registerPhoneStateListener(mHandler::post, mPhoneStateListener);
        super.onSlicePinned();
    }

@@ -115,7 +112,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements
        mDataEnabledListener.stop();
        mConnectivityListener.stop();
        mSignalStrengthListener.pause();
        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
        mTelephonyManager.unregisterPhoneStateListener(mPhoneStateListener);
        super.onSliceUnpinned();
    }

@@ -145,13 +142,12 @@ public class NetworkProviderWorker extends WifiScanWorker implements
            return;
        }
        if (SubscriptionManager.isUsableSubscriptionId(defaultDataSubId)) {
            mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
            mTelephonyManager.unregisterPhoneStateListener(mPhoneStateListener);
            mMobileDataObserver.unregister(mContext);

            mSignalStrengthListener.updateSubscriptionIds(Collections.singleton(defaultDataSubId));
            mTelephonyManager = mTelephonyManager.createForSubscriptionId(defaultDataSubId);
            mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE
                    | PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED);
            mTelephonyManager.registerPhoneStateListener(mHandler::post, mPhoneStateListener);
            mMobileDataObserver.register(mContext, mDefaultDataSubid);
            mConfig = getConfig(mContext);
        } else {
@@ -221,11 +217,10 @@ public class NetworkProviderWorker extends WifiScanWorker implements
        }
    }

    class NetworkProviderPhoneStateListener extends PhoneStateListener {
        NetworkProviderPhoneStateListener(Executor executor) {
            super(executor);
        }

    class NetworkProviderPhoneStateListener extends PhoneStateListener implements
            PhoneStateListener.DataConnectionStateChangedListener,
            PhoneStateListener.DisplayInfoChangedListener,
            PhoneStateListener.ServiceStateChangedListener {
        @Override
        public void onServiceStateChanged(ServiceState state) {
            Log.d(TAG, "onServiceStateChanged voiceState=" + state.getState()
@@ -239,6 +234,13 @@ public class NetworkProviderWorker extends WifiScanWorker implements
            mTelephonyDisplayInfo = telephonyDisplayInfo;
            updateSlice();
        }

        @Override
        public void onDataConnectionStateChanged(int state, int networkType) {
            Log.d(TAG,
                    "onDataConnectionStateChanged: networkType=" + networkType + " state=" + state);
            updateSlice();
        }
    }

    @VisibleForTesting
+12 −0
Original line number Diff line number Diff line
@@ -228,6 +228,18 @@ public class NetworkProviderWorkerTest {
        assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
    }

    @Test
    @UiThreadTest
    public void onDataConnectionStateChanged_notifyPhoneStateListener_callUpdateSlice() {
        mMockNetworkProviderWorker.onSlicePinned();
        mMockNetworkProviderWorker.receiveNotification(false);

        mMockNetworkProviderWorker.mPhoneStateListener.onDataConnectionStateChanged(
                TelephonyManager.DATA_DISCONNECTED, TelephonyManager.NETWORK_TYPE_LTE);

        assertThat(mMockNetworkProviderWorker.hasNotification()).isTrue();
    }

    @Test
    public void onInternetTypeChanged_connectedFromWifiToEthernet_callUpdateSlice() {
        mMockNetworkProviderWorker.receiveNotification(false);