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

Commit f4d3302b authored by Sundeep Ghuman's avatar Sundeep Ghuman
Browse files

Update WifiConfiguration in AccessPoint.

Currently, calling AccessPoint.update(config, info, networkInfo) will
not store the new WifiConfiguration object if it has changed. This can
cause the summary statement to fall out of sync.

Bug: b/38409294
Test: Open WifiNetworkDetails page with verbose logging. Stale state no
longer shown when config changes.
runtest --path
frameworks/base/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java

Change-Id: I86411527472621f86ab691ee772c0b3d2153d01f
parent 5345fce5
Loading
Loading
Loading
Loading
+6 −0
Original line number Original line Diff line number Diff line
@@ -1053,6 +1053,12 @@ public class AccessPoint implements Comparable<AccessPoint> {
        final int oldLevel = getLevel();
        final int oldLevel = getLevel();
        if (info != null && isInfoForThisAccessPoint(config, info)) {
        if (info != null && isInfoForThisAccessPoint(config, info)) {
            updated = (mInfo == null);
            updated = (mInfo == null);
            if (mConfig != config) {
                // We do not set updated = true as we do not want to increase the amount of sorting
                // and copying performed in WifiTracker at this time. If issues involving refresh
                // are still seen, we will investigate further.
                update(config); // Notifies the AccessPointListener of the change
            }
            if (mRssi != info.getRssi()) {
            if (mRssi != info.getRssi()) {
                mRssi = info.getRssi();
                mRssi = info.getRssi();
                updated = true;
                updated = true;
+1 −0
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@
    <uses-permission android:name="android.permission.MANAGE_USERS" />
    <uses-permission android:name="android.permission.MANAGE_USERS" />
    <uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY"/>
    <uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY"/>
    <uses-permission android:name="android.permission.SET_TIME_ZONE" />
    <uses-permission android:name="android.permission.SET_TIME_ZONE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />


+34 −0
Original line number Original line Diff line number Diff line
@@ -20,6 +20,8 @@ import static com.google.common.truth.Truth.assertWithMessage;


import static org.mockito.Mockito.any;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.when;


import android.content.Context;
import android.content.Context;
@@ -607,4 +609,36 @@ public class AccessPointTest {
        NetworkInfo newInfo = new NetworkInfo(networkInfo); // same values
        NetworkInfo newInfo = new NetworkInfo(networkInfo); // same values
        assertThat(ap.update(config, wifiInfo, newInfo)).isFalse();
        assertThat(ap.update(config, wifiInfo, newInfo)).isFalse();
    }
    }

    @Test
    public void testUpdateWithConfigChangeOnly_returnsFalseButInvokesListener() {
        int networkId = 123;
        int rssi = -55;
        WifiConfiguration config = new WifiConfiguration();
        config.networkId = networkId;
        config.numNoInternetAccessReports = 1;

        WifiInfo wifiInfo = new WifiInfo();
        wifiInfo.setNetworkId(networkId);
        wifiInfo.setRssi(rssi);

        NetworkInfo networkInfo =
                new NetworkInfo(ConnectivityManager.TYPE_WIFI, 0 /* subtype */, "WIFI", "");
        networkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, "", "");

        AccessPoint ap = new TestAccessPointBuilder(mContext)
                .setNetworkInfo(networkInfo)
                .setNetworkId(networkId)
                .setRssi(rssi)
                .setWifiInfo(wifiInfo)
                .build();

        AccessPoint.AccessPointListener mockListener = mock(AccessPoint.AccessPointListener.class);
        ap.setListener(mockListener);
        WifiConfiguration newConfig = new WifiConfiguration(config);
        config.validatedInternetAccess = true;

        assertThat(ap.update(newConfig, wifiInfo, networkInfo)).isFalse();
        verify(mockListener).onAccessPointChanged(ap);
    }
}
}