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

Commit fbba3276 authored by Lorenzo Colitti's avatar Lorenzo Colitti Committed by android-build-merger
Browse files

Update the avoid bad wifi settings on the handler thread. am: 2618c1b7 am: 2633c316

am: 40942530

Change-Id: I02d6cd44bd0588d2a516e65daba811638a2eb0cf
parents 0b6b96c7 40942530
Loading
Loading
Loading
Loading
+26 −3
Original line number Diff line number Diff line
@@ -857,6 +857,15 @@ public class ConnectivityService extends IConnectivityManager.Stub
                Settings.Global.NETWORK_SWITCH_NOTIFICATION_RATE_LIMIT_MILLIS,
                LingerMonitor.DEFAULT_NOTIFICATION_RATE_LIMIT_MILLIS);
        mLingerMonitor = new LingerMonitor(mContext, mNotifier, dailyLimit, rateLimit);

        intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
        mContext.registerReceiverAsUser(new BroadcastReceiver() {
            public void onReceive(Context context, Intent intent) {
                mHandler.sendEmptyMessage(EVENT_CONFIGURE_NETWORK_AVOID_BAD_WIFI);
            }
        }, UserHandle.ALL, intentFilter, null, null);
        updateAvoidBadWifi();
    }

    private NetworkRequest createInternetRequestForTransport(
@@ -2750,17 +2759,29 @@ public class ConnectivityService extends IConnectivityManager.Stub
                PROMPT_UNVALIDATED_DELAY_MS);
    }

    @VisibleForTesting
    private boolean mAvoidBadWifi;

    public boolean avoidBadWifi() {
        return mAvoidBadWifi;
    }

    @VisibleForTesting
    public boolean updateAvoidBadWifi() {
        // There are two modes: either we always automatically avoid unvalidated wifi, or we show a
        // dialog and don't switch to it. The behaviour is controlled by the NETWORK_AVOID_BAD_WIFI
        // setting. If the setting has no value, then the value is taken from the config value,
        // which can be changed via OEM/carrier overlays.
        //
        // The only valid values for NETWORK_AVOID_BAD_WIFI are null and unset. Currently, the unit
        // test uses 0 in order to avoid having to mock out fetching the carrier setting.
        int defaultAvoidBadWifi =
            mContext.getResources().getInteger(R.integer.config_networkAvoidBadWifi);
        int avoid = Settings.Global.getInt(mContext.getContentResolver(),
            Settings.Global.NETWORK_AVOID_BAD_WIFI, defaultAvoidBadWifi);
        return avoid == 1;

        boolean prev = mAvoidBadWifi;
        mAvoidBadWifi = (avoid == 1);
        return mAvoidBadWifi != prev;
    }

    private void showValidationNotification(NetworkAgentInfo nai, NotificationType type) {
@@ -2899,7 +2920,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
                    break;
                }
                case EVENT_CONFIGURE_NETWORK_AVOID_BAD_WIFI: {
                    if (updateAvoidBadWifi()) {
                        rematchAllNetworksAndRequests(null, 0);
                    }
                    break;
                }
                case EVENT_REQUEST_LINKPROPERTIES: