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

Commit 28de999e authored by Oscar Shu's avatar Oscar Shu Committed by Android (Google) Code Review
Browse files

Merge changes from topic "PnoPipeline"

* changes:
  Pno frequency culling: Settings.Global flag
  Pno frequency culling: add frequencies field
parents 16e9f599 d4b607ce
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -10285,6 +10285,18 @@ public final class Settings {
        public static final String WIFI_LINK_SPEED_METRICS_ENABLED =
                "wifi_link_speed_metrics_enabled";
        /**
         * Setting to enable the PNO frequency culling optimization.
         * Disabled by default, and setting it to 1 will enable it.
         * The value is boolean (0 or 1).
         * @hide
         */
        public static final String WIFI_PNO_FREQUENCY_CULLING_ENABLED =
                "wifi_pno_frequency_culling_enabled";
        private static final Validator WIFI_PNO_FREQUENCY_CULLING_ENABLED_VALIDATOR =
                BOOLEAN_VALIDATOR;
       /**
        * The maximum number of times we will retry a connection to an access
        * point for which we have failed in acquiring an IP address from DHCP.
@@ -12692,6 +12704,8 @@ public final class Settings {
            VALIDATORS.put(DEVICE_PROVISIONING_MOBILE_DATA_ENABLED, BOOLEAN_VALIDATOR);
            VALIDATORS.put(REQUIRE_PASSWORD_TO_DECRYPT, BOOLEAN_VALIDATOR);
            VALIDATORS.put(DEVICE_DEMO_MODE, BOOLEAN_VALIDATOR);
            VALIDATORS.put(WIFI_PNO_FREQUENCY_CULLING_ENABLED,
                    WIFI_PNO_FREQUENCY_CULLING_ENABLED_VALIDATOR);
        }
        /**
+1 −0
Original line number Diff line number Diff line
@@ -486,6 +486,7 @@ public class SettingsBackupTest {
                    Settings.Global.WIFI_IDLE_MS,
                    Settings.Global.WIFI_IS_UNUSABLE_EVENT_METRICS_ENABLED,
                    Settings.Global.WIFI_LINK_SPEED_METRICS_ENABLED,
                    Settings.Global.WIFI_PNO_FREQUENCY_CULLING_ENABLED,
                    Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT,
                    Settings.Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS,
                    Settings.Global.WIFI_NETWORK_SHOW_RSSI,
+6 −4
Original line number Diff line number Diff line
@@ -594,17 +594,17 @@ public class WifiScanner {
            /** SSID of the network */
            public String ssid;
            /** Bitmask of the FLAG_XXX */
            public byte flags;
            public byte flags = 0;
            /** Bitmask of the ATUH_XXX */
            public byte authBitField;
            public byte authBitField = 0;
            /** frequencies on which the particular network needs to be scanned for */
            public int[] frequencies = {};

            /**
             * default constructor for PnoNetwork
             */
            public PnoNetwork(String ssid) {
                this.ssid = ssid;
                flags = 0;
                authBitField = 0;
            }
        }

@@ -651,6 +651,7 @@ public class WifiScanner {
                    dest.writeString(networkList[i].ssid);
                    dest.writeByte(networkList[i].flags);
                    dest.writeByte(networkList[i].authBitField);
                    dest.writeIntArray(networkList[i].frequencies);
                }
            } else {
                dest.writeInt(0);
@@ -677,6 +678,7 @@ public class WifiScanner {
                            PnoNetwork network = new PnoNetwork(ssid);
                            network.flags = in.readByte();
                            network.authBitField = in.readByte();
                            network.frequencies = in.createIntArray();
                            settings.networkList[i] = network;
                        }
                        return settings;
+84 −1
Original line number Diff line number Diff line
@@ -17,16 +17,20 @@
package android.net.wifi;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.validateMockitoUsage;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.net.wifi.WifiScanner.PnoSettings;
import android.net.wifi.WifiScanner.PnoSettings.PnoNetwork;
import android.net.wifi.WifiScanner.ScanSettings;
import android.os.Handler;
import android.os.Parcel;
import android.os.test.TestLooper;
import android.support.test.filters.SmallTest;
import android.net.wifi.WifiScanner.ScanSettings;

import com.android.internal.util.test.BidirectionalAsyncChannelServer;

@@ -36,6 +40,8 @@ import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import java.util.Arrays;


/**
 * Unit tests for {@link android.net.wifi.WifiScanner}.
@@ -47,6 +53,19 @@ public class WifiScannerTest {
    @Mock
    private IWifiScanner mService;

    private static final boolean TEST_PNOSETTINGS_IS_CONNECTED = false;
    private static final int TEST_PNOSETTINGS_MIN_5GHZ_RSSI = -60;
    private static final int TEST_PNOSETTINGS_MIN_2GHZ_RSSI = -70;
    private static final int TEST_PNOSETTINGS_INITIAL_SCORE_MAX = 50;
    private static final int TEST_PNOSETTINGS_CURRENT_CONNECTION_BONUS = 10;
    private static final int TEST_PNOSETTINGS_SAME_NETWORK_BONUS = 11;
    private static final int TEST_PNOSETTINGS_SECURE_BONUS = 12;
    private static final int TEST_PNOSETTINGS_BAND_5GHZ_BONUS = 13;
    private static final String TEST_SSID_1 = "TEST1";
    private static final String TEST_SSID_2 = "TEST2";
    private static final int[] TEST_FREQUENCIES_1 = {};
    private static final int[] TEST_FREQUENCIES_2 = {2500, 5124};

    private WifiScanner mWifiScanner;
    private TestLooper mLooper;
    private Handler mHandler;
@@ -120,4 +139,68 @@ public class WifiScannerTest {
        return ScanSettings.CREATOR.createFromParcel(parcel);
    }

    /**
     *  PnoSettings object can be serialized and deserialized, while keeping the
     *  values unchanged.
     */
    @Test
    public void canSerializeAndDeserializePnoSettings() throws Exception {

        PnoSettings pnoSettings = new PnoSettings();

        PnoNetwork pnoNetwork1 = new PnoNetwork(TEST_SSID_1);
        PnoNetwork pnoNetwork2 = new PnoNetwork(TEST_SSID_2);
        pnoNetwork1.frequencies = TEST_FREQUENCIES_1;
        pnoNetwork2.frequencies = TEST_FREQUENCIES_2;

        pnoSettings.networkList = new PnoNetwork[]{pnoNetwork1, pnoNetwork2};
        pnoSettings.isConnected = TEST_PNOSETTINGS_IS_CONNECTED;
        pnoSettings.min5GHzRssi = TEST_PNOSETTINGS_MIN_5GHZ_RSSI;
        pnoSettings.min24GHzRssi = TEST_PNOSETTINGS_MIN_2GHZ_RSSI;
        pnoSettings.initialScoreMax = TEST_PNOSETTINGS_INITIAL_SCORE_MAX;
        pnoSettings.currentConnectionBonus = TEST_PNOSETTINGS_CURRENT_CONNECTION_BONUS;
        pnoSettings.sameNetworkBonus = TEST_PNOSETTINGS_SAME_NETWORK_BONUS;
        pnoSettings.secureBonus = TEST_PNOSETTINGS_SECURE_BONUS;
        pnoSettings.band5GHzBonus = TEST_PNOSETTINGS_BAND_5GHZ_BONUS;

        Parcel parcel = Parcel.obtain();
        pnoSettings.writeToParcel(parcel, 0);
        // Rewind the pointer to the head of the parcel.
        parcel.setDataPosition(0);
        PnoSettings pnoSettingsDeserialized =
                pnoSettings.CREATOR.createFromParcel(parcel);

        assertNotNull(pnoSettingsDeserialized);
        assertEquals(TEST_PNOSETTINGS_IS_CONNECTED, pnoSettingsDeserialized.isConnected);
        assertEquals(TEST_PNOSETTINGS_MIN_5GHZ_RSSI, pnoSettingsDeserialized.min5GHzRssi);
        assertEquals(TEST_PNOSETTINGS_MIN_2GHZ_RSSI, pnoSettingsDeserialized.min24GHzRssi);
        assertEquals(TEST_PNOSETTINGS_INITIAL_SCORE_MAX, pnoSettingsDeserialized.initialScoreMax);
        assertEquals(TEST_PNOSETTINGS_CURRENT_CONNECTION_BONUS,
                pnoSettingsDeserialized.currentConnectionBonus);
        assertEquals(TEST_PNOSETTINGS_SAME_NETWORK_BONUS,
                pnoSettingsDeserialized.sameNetworkBonus);
        assertEquals(TEST_PNOSETTINGS_SECURE_BONUS, pnoSettingsDeserialized.secureBonus);
        assertEquals(TEST_PNOSETTINGS_BAND_5GHZ_BONUS, pnoSettingsDeserialized.band5GHzBonus);

        // Test parsing of PnoNetwork
        assertEquals(pnoSettings.networkList.length, pnoSettingsDeserialized.networkList.length);
        for (int i = 0; i < pnoSettings.networkList.length; i++) {
            PnoNetwork expected = pnoSettings.networkList[i];
            PnoNetwork actual = pnoSettingsDeserialized.networkList[i];
            assertEquals(expected.ssid, actual.ssid);
            assertEquals(expected.flags, actual.flags);
            assertEquals(expected.authBitField, actual.authBitField);
            assertTrue(Arrays.equals(expected.frequencies, actual.frequencies));
        }
    }

    /**
     *  Make sure that frequencies is not null by default.
     */
    @Test
    public void pnoNetworkFrequencyIsNotNull() throws Exception {
        PnoNetwork pnoNetwork = new PnoNetwork(TEST_SSID_1);
        assertNotNull(pnoNetwork.frequencies);
    }

}