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

Commit 5020c0b6 authored by Remi NGUYEN VAN's avatar Remi NGUYEN VAN Committed by android-build-merger
Browse files

Merge "Run callbacks on ConnectivityService thread" am: bef5d216 am: 5af10311

am: 6f757cc4

Change-Id: I12d7b8fca85502807288bba03417f2ceb0c9f533
parents fbfd4d42 6f757cc4
Loading
Loading
Loading
Loading
+17 −12
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ public class MultinetworkPolicyTracker {

    private final Context mContext;
    private final Handler mHandler;
    private final Runnable mReevaluateRunnable;
    private final Runnable mAvoidBadWifiCallback;
    private final List<Uri> mSettingsUris;
    private final ContentResolver mResolver;
    private final SettingObserver mSettingObserver;
@@ -81,12 +81,7 @@ public class MultinetworkPolicyTracker {
    public MultinetworkPolicyTracker(Context ctx, Handler handler, Runnable avoidBadWifiCallback) {
        mContext = ctx;
        mHandler = handler;
        mReevaluateRunnable = () -> {
            if (updateAvoidBadWifi() && avoidBadWifiCallback != null) {
                avoidBadWifiCallback.run();
            }
            updateMeteredMultipathPreference();
        };
        mAvoidBadWifiCallback = avoidBadWifiCallback;
        mSettingsUris = Arrays.asList(
            Settings.Global.getUriFor(NETWORK_AVOID_BAD_WIFI),
            Settings.Global.getUriFor(NETWORK_METERED_MULTIPATH_PREFERENCE));
@@ -95,15 +90,15 @@ public class MultinetworkPolicyTracker {
        mBroadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                reevaluate();
                reevaluateInternal();
            }
        };

        TelephonyManager.from(ctx).listen(new PhoneStateListener() {
        TelephonyManager.from(ctx).listen(new PhoneStateListener(handler.getLooper()) {
            @Override
            public void onActiveDataSubscriptionIdChanged(int subId) {
                mActiveSubId = subId;
                reevaluate();
                reevaluateInternal();
            }
        }, PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE);

@@ -119,7 +114,7 @@ public class MultinetworkPolicyTracker {
        final IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
        mContext.registerReceiverAsUser(
                mBroadcastReceiver, UserHandle.ALL, intentFilter, null, null);
                mBroadcastReceiver, UserHandle.ALL, intentFilter, null, mHandler);

        reevaluate();
    }
@@ -164,7 +159,17 @@ public class MultinetworkPolicyTracker {

    @VisibleForTesting
    public void reevaluate() {
        mHandler.post(mReevaluateRunnable);
        mHandler.post(this::reevaluateInternal);
    }

    /**
     * Reevaluate the settings. Must be called on the handler thread.
     */
    private void reevaluateInternal() {
        if (updateAvoidBadWifi() && mAvoidBadWifiCallback != null) {
            mAvoidBadWifiCallback.run();
        }
        updateMeteredMultipathPreference();
    }

    public boolean updateAvoidBadWifi() {
+1 −1
Original line number Diff line number Diff line
@@ -1102,7 +1102,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
        mSettingsObserver = new SettingsObserver(mContext, mHandler);
        registerSettingsCallbacks();

        final DataConnectionStats dataConnectionStats = new DataConnectionStats(mContext);
        final DataConnectionStats dataConnectionStats = new DataConnectionStats(mContext, mHandler);
        dataConnectionStats.startMonitoring();

        mKeepaliveTracker = new KeepaliveTracker(mContext, mHandler);
+13 −3
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
@@ -39,15 +41,19 @@ public class DataConnectionStats extends BroadcastReceiver {

    private final Context mContext;
    private final IBatteryStats mBatteryStats;
    private final Handler mListenerHandler;
    private final PhoneStateListener mPhoneStateListener;

    private IccCardConstants.State mSimState = IccCardConstants.State.READY;
    private SignalStrength mSignalStrength;
    private ServiceState mServiceState;
    private int mDataState = TelephonyManager.DATA_DISCONNECTED;

    public DataConnectionStats(Context context) {
    public DataConnectionStats(Context context, Handler listenerHandler) {
        mContext = context;
        mBatteryStats = BatteryStatsService.getService();
        mListenerHandler = listenerHandler;
        mPhoneStateListener = new PhoneStateListenerImpl(listenerHandler.getLooper());
    }

    public void startMonitoring() {
@@ -63,7 +69,7 @@ public class DataConnectionStats extends BroadcastReceiver {
        filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
        filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        filter.addAction(ConnectivityManager.INET_CONDITION_ACTION);
        mContext.registerReceiver(this, filter);
        mContext.registerReceiver(this, filter, null /* broadcastPermission */, mListenerHandler);
    }

    @Override
@@ -128,7 +134,11 @@ public class DataConnectionStats extends BroadcastReceiver {
                && mServiceState.getState() != ServiceState.STATE_POWER_OFF;
    }

    private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
    private class PhoneStateListenerImpl extends PhoneStateListener {
        PhoneStateListenerImpl(Looper looper) {
            super(looper);
        }

        @Override
        public void onSignalStrengthsChanged(SignalStrength signalStrength) {
            mSignalStrength = signalStrength;