19853743705603e0b5214e5995bea8c9267708813Dave Schaefer/*
29853743705603e0b5214e5995bea8c9267708813Dave Schaefer * Copyright (C) 2017 The Android Open Source Project
39853743705603e0b5214e5995bea8c9267708813Dave Schaefer *
49853743705603e0b5214e5995bea8c9267708813Dave Schaefer * Licensed under the Apache License, Version 2.0 (the "License");
59853743705603e0b5214e5995bea8c9267708813Dave Schaefer * you may not use this file except in compliance with the License.
69853743705603e0b5214e5995bea8c9267708813Dave Schaefer * You may obtain a copy of the License at
79853743705603e0b5214e5995bea8c9267708813Dave Schaefer *
89853743705603e0b5214e5995bea8c9267708813Dave Schaefer *      http://www.apache.org/licenses/LICENSE-2.0
99853743705603e0b5214e5995bea8c9267708813Dave Schaefer *
109853743705603e0b5214e5995bea8c9267708813Dave Schaefer * Unless required by applicable law or agreed to in writing, software
119853743705603e0b5214e5995bea8c9267708813Dave Schaefer * distributed under the License is distributed on an "AS IS" BASIS,
129853743705603e0b5214e5995bea8c9267708813Dave Schaefer * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139853743705603e0b5214e5995bea8c9267708813Dave Schaefer * See the License for the specific language governing permissions and
149853743705603e0b5214e5995bea8c9267708813Dave Schaefer * limitations under the License.
159853743705603e0b5214e5995bea8c9267708813Dave Schaefer */
169853743705603e0b5214e5995bea8c9267708813Dave Schaefer
179853743705603e0b5214e5995bea8c9267708813Dave Schaeferpackage com.android.settingslib.wifi;
189853743705603e0b5214e5995bea8c9267708813Dave Schaefer
199853743705603e0b5214e5995bea8c9267708813Dave Schaeferimport android.content.Context;
209853743705603e0b5214e5995bea8c9267708813Dave Schaeferimport android.net.ConnectivityManager;
219853743705603e0b5214e5995bea8c9267708813Dave Schaeferimport android.net.NetworkInfo;
22a28050ae42edb487239d9800b173ea334981f2b5Sundeep Ghumanimport android.net.wifi.ScanResult;
239853743705603e0b5214e5995bea8c9267708813Dave Schaeferimport android.net.wifi.WifiConfiguration;
2496a53579088a21590cb02e5befc88ef965520d3eSundeep Ghumanimport android.net.wifi.WifiInfo;
259853743705603e0b5214e5995bea8c9267708813Dave Schaeferimport android.os.Bundle;
2604f7f34a713062ec3fd54a4c19481e9f76819899Sundeep Ghumanimport android.os.Parcelable;
27d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargentimport android.support.annotation.Keep;
28fedf4617894ec75d972bbc681b3c64ef8914b980Sundeep Ghuman
29f4f3842b02262a2483b958aa4b1e9b9e8fc4fb7bEric Schwarzenbachimport com.android.settingslib.wifi.AccessPoint.Speed;
309853743705603e0b5214e5995bea8c9267708813Dave Schaefer
31a28050ae42edb487239d9800b173ea334981f2b5Sundeep Ghumanimport java.util.ArrayList;
32a28050ae42edb487239d9800b173ea334981f2b5Sundeep Ghuman
339853743705603e0b5214e5995bea8c9267708813Dave Schaefer/**
349853743705603e0b5214e5995bea8c9267708813Dave Schaefer* Build and return a valid AccessPoint.
359853743705603e0b5214e5995bea8c9267708813Dave Schaefer*
36ce6b0b2539dbb562b5c0e720d51bd3d35af437cfSundeep Ghuman* Only intended for testing the AccessPoint class or creating Access points to be used in testing
37ce6b0b2539dbb562b5c0e720d51bd3d35af437cfSundeep Ghuman* applications. AccessPoints were designed to only be populated by the mechanisms of scan results
38ce6b0b2539dbb562b5c0e720d51bd3d35af437cfSundeep Ghuman* and wifi configurations.
399853743705603e0b5214e5995bea8c9267708813Dave Schaefer*/
40d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent@Keep
419853743705603e0b5214e5995bea8c9267708813Dave Schaeferpublic class TestAccessPointBuilder {
429853743705603e0b5214e5995bea8c9267708813Dave Schaefer    // match the private values in WifiManager
439853743705603e0b5214e5995bea8c9267708813Dave Schaefer    private static final int MIN_RSSI = -100;
449853743705603e0b5214e5995bea8c9267708813Dave Schaefer    private static final int MAX_RSSI = -55;
459853743705603e0b5214e5995bea8c9267708813Dave Schaefer
469853743705603e0b5214e5995bea8c9267708813Dave Schaefer    // set some sensible defaults
477c32aa3039fd9eba3c09f7503ac451a0ba0b1d87Sundeep Ghuman    private String mBssid = null;
48f4f3842b02262a2483b958aa4b1e9b9e8fc4fb7bEric Schwarzenbach    private int mSpeed = Speed.NONE;
499853743705603e0b5214e5995bea8c9267708813Dave Schaefer    private int mRssi = AccessPoint.UNREACHABLE_RSSI;
5096a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman    private int mNetworkId = WifiConfiguration.INVALID_NETWORK_ID;
519853743705603e0b5214e5995bea8c9267708813Dave Schaefer    private String ssid = "TestSsid";
529853743705603e0b5214e5995bea8c9267708813Dave Schaefer    private NetworkInfo mNetworkInfo = null;
53ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu    private String mFqdn = null;
54ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu    private String mProviderFriendlyName = null;
55ce6b0b2539dbb562b5c0e720d51bd3d35af437cfSundeep Ghuman    private int mSecurity = AccessPoint.SECURITY_NONE;
5696a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman    private WifiConfiguration mWifiConfig;
5796a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman    private WifiInfo mWifiInfo;
58280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu    private boolean mIsCarrierAp = false;
59280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu    private String mCarrierName = null;
609853743705603e0b5214e5995bea8c9267708813Dave Schaefer
619853743705603e0b5214e5995bea8c9267708813Dave Schaefer    Context mContext;
6204f7f34a713062ec3fd54a4c19481e9f76819899Sundeep Ghuman    private ArrayList<ScanResult> mScanResults;
63fedf4617894ec75d972bbc681b3c64ef8914b980Sundeep Ghuman    private ArrayList<TimestampedScoredNetwork> mScoredNetworkCache;
649853743705603e0b5214e5995bea8c9267708813Dave Schaefer
65d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
669853743705603e0b5214e5995bea8c9267708813Dave Schaefer    public TestAccessPointBuilder(Context context) {
679853743705603e0b5214e5995bea8c9267708813Dave Schaefer        mContext = context;
689853743705603e0b5214e5995bea8c9267708813Dave Schaefer    }
699853743705603e0b5214e5995bea8c9267708813Dave Schaefer
70d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
719853743705603e0b5214e5995bea8c9267708813Dave Schaefer    public AccessPoint build() {
729853743705603e0b5214e5995bea8c9267708813Dave Schaefer        Bundle bundle = new Bundle();
739853743705603e0b5214e5995bea8c9267708813Dave Schaefer
7496a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman        WifiConfiguration wifiConfig = new WifiConfiguration();
7596a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman        wifiConfig.networkId = mNetworkId;
767c32aa3039fd9eba3c09f7503ac451a0ba0b1d87Sundeep Ghuman        wifiConfig.BSSID = mBssid;
779853743705603e0b5214e5995bea8c9267708813Dave Schaefer
789853743705603e0b5214e5995bea8c9267708813Dave Schaefer        bundle.putString(AccessPoint.KEY_SSID, ssid);
7996a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman        bundle.putParcelable(AccessPoint.KEY_CONFIG, wifiConfig);
809853743705603e0b5214e5995bea8c9267708813Dave Schaefer        bundle.putParcelable(AccessPoint.KEY_NETWORKINFO, mNetworkInfo);
8196a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman        bundle.putParcelable(AccessPoint.KEY_WIFIINFO, mWifiInfo);
82ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu        if (mFqdn != null) {
83ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu            bundle.putString(AccessPoint.KEY_FQDN, mFqdn);
84ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu        }
85ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu        if (mProviderFriendlyName != null) {
86ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu            bundle.putString(AccessPoint.KEY_PROVIDER_FRIENDLY_NAME, mProviderFriendlyName);
87ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu        }
8804f7f34a713062ec3fd54a4c19481e9f76819899Sundeep Ghuman        if (mScanResults != null) {
8904f7f34a713062ec3fd54a4c19481e9f76819899Sundeep Ghuman            bundle.putParcelableArray(AccessPoint.KEY_SCANRESULTS,
9004f7f34a713062ec3fd54a4c19481e9f76819899Sundeep Ghuman                    mScanResults.toArray(new Parcelable[mScanResults.size()]));
91a28050ae42edb487239d9800b173ea334981f2b5Sundeep Ghuman        }
92fedf4617894ec75d972bbc681b3c64ef8914b980Sundeep Ghuman        if (mScoredNetworkCache != null) {
93fedf4617894ec75d972bbc681b3c64ef8914b980Sundeep Ghuman            bundle.putParcelableArrayList(AccessPoint.KEY_SCOREDNETWORKCACHE, mScoredNetworkCache);
94fedf4617894ec75d972bbc681b3c64ef8914b980Sundeep Ghuman        }
95ce6b0b2539dbb562b5c0e720d51bd3d35af437cfSundeep Ghuman        bundle.putInt(AccessPoint.KEY_SECURITY, mSecurity);
96f4f3842b02262a2483b958aa4b1e9b9e8fc4fb7bEric Schwarzenbach        bundle.putInt(AccessPoint.KEY_SPEED, mSpeed);
97280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu        bundle.putBoolean(AccessPoint.KEY_IS_CARRIER_AP, mIsCarrierAp);
98280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu        if (mCarrierName != null) {
99280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu            bundle.putString(AccessPoint.KEY_CARRIER_NAME, mCarrierName);
100280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu        }
101ce6b0b2539dbb562b5c0e720d51bd3d35af437cfSundeep Ghuman
1029853743705603e0b5214e5995bea8c9267708813Dave Schaefer        AccessPoint ap = new AccessPoint(mContext, bundle);
1039853743705603e0b5214e5995bea8c9267708813Dave Schaefer        ap.setRssi(mRssi);
1049853743705603e0b5214e5995bea8c9267708813Dave Schaefer        return ap;
1059853743705603e0b5214e5995bea8c9267708813Dave Schaefer    }
1069853743705603e0b5214e5995bea8c9267708813Dave Schaefer
107d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
1089853743705603e0b5214e5995bea8c9267708813Dave Schaefer    public TestAccessPointBuilder setActive(boolean active) {
1099853743705603e0b5214e5995bea8c9267708813Dave Schaefer        if (active) {
1109853743705603e0b5214e5995bea8c9267708813Dave Schaefer            mNetworkInfo = new NetworkInfo(
1119853743705603e0b5214e5995bea8c9267708813Dave Schaefer                ConnectivityManager.TYPE_DUMMY,
1129853743705603e0b5214e5995bea8c9267708813Dave Schaefer                ConnectivityManager.TYPE_DUMMY,
1139853743705603e0b5214e5995bea8c9267708813Dave Schaefer                "TestNetwork",
1149853743705603e0b5214e5995bea8c9267708813Dave Schaefer                "TestNetwork");
1159853743705603e0b5214e5995bea8c9267708813Dave Schaefer        } else {
1169853743705603e0b5214e5995bea8c9267708813Dave Schaefer            mNetworkInfo = null;
1179853743705603e0b5214e5995bea8c9267708813Dave Schaefer        }
1189853743705603e0b5214e5995bea8c9267708813Dave Schaefer        return this;
1199853743705603e0b5214e5995bea8c9267708813Dave Schaefer    }
1209853743705603e0b5214e5995bea8c9267708813Dave Schaefer
1219853743705603e0b5214e5995bea8c9267708813Dave Schaefer    /**
12296a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman     * Set the rssi based upon the desired signal level.
123ce78a5f2d33716fde95f12b1e02df953d013e986Sundeep Ghuman     *
12496a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman     * <p>Side effect: if this AccessPoint was previously unreachable,
12596a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman     * setting the level will also make it reachable.
12696a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman     */
127d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
1289853743705603e0b5214e5995bea8c9267708813Dave Schaefer    public TestAccessPointBuilder setLevel(int level) {
129b9647ebba07f4c7e1db9ccbbd3acc78323271c9dSundeep Ghuman        // Reversal of WifiManager.calculateSignalLevels
130b9647ebba07f4c7e1db9ccbbd3acc78323271c9dSundeep Ghuman        if (level == 0) {
131b9647ebba07f4c7e1db9ccbbd3acc78323271c9dSundeep Ghuman            mRssi = MIN_RSSI;
132b9647ebba07f4c7e1db9ccbbd3acc78323271c9dSundeep Ghuman        } else if (level >= AccessPoint.SIGNAL_LEVELS) {
133b9647ebba07f4c7e1db9ccbbd3acc78323271c9dSundeep Ghuman            mRssi = MAX_RSSI;
134b9647ebba07f4c7e1db9ccbbd3acc78323271c9dSundeep Ghuman        } else {
135b9647ebba07f4c7e1db9ccbbd3acc78323271c9dSundeep Ghuman            float inputRange = MAX_RSSI - MIN_RSSI;
136b9647ebba07f4c7e1db9ccbbd3acc78323271c9dSundeep Ghuman            float outputRange = AccessPoint.SIGNAL_LEVELS - 1;
137b9647ebba07f4c7e1db9ccbbd3acc78323271c9dSundeep Ghuman            mRssi = (int) (level * inputRange / outputRange + MIN_RSSI);
1389853743705603e0b5214e5995bea8c9267708813Dave Schaefer        }
1399853743705603e0b5214e5995bea8c9267708813Dave Schaefer        return this;
1409853743705603e0b5214e5995bea8c9267708813Dave Schaefer    }
1419853743705603e0b5214e5995bea8c9267708813Dave Schaefer
142d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
14396a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman    public TestAccessPointBuilder setNetworkInfo(NetworkInfo info) {
14496a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman        mNetworkInfo = info;
14596a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman        return this;
14696a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman    }
14796a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman
148d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
14996a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman    public TestAccessPointBuilder setRssi(int rssi) {
15096a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman        mRssi = rssi;
151f4f3842b02262a2483b958aa4b1e9b9e8fc4fb7bEric Schwarzenbach        return this;
152f4f3842b02262a2483b958aa4b1e9b9e8fc4fb7bEric Schwarzenbach    }
153f4f3842b02262a2483b958aa4b1e9b9e8fc4fb7bEric Schwarzenbach
154f4f3842b02262a2483b958aa4b1e9b9e8fc4fb7bEric Schwarzenbach    public TestAccessPointBuilder setSpeed(int speed) {
155f4f3842b02262a2483b958aa4b1e9b9e8fc4fb7bEric Schwarzenbach        mSpeed = speed;
15696a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman        return this;
15796a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman    }
15896a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman
1599853743705603e0b5214e5995bea8c9267708813Dave Schaefer    /**
1609853743705603e0b5214e5995bea8c9267708813Dave Schaefer    * Set whether the AccessPoint is reachable.
1619853743705603e0b5214e5995bea8c9267708813Dave Schaefer    * Side effect: if the signal level was not previously set,
1629853743705603e0b5214e5995bea8c9267708813Dave Schaefer    * making an AccessPoint reachable will set the signal to the minimum level.
1639853743705603e0b5214e5995bea8c9267708813Dave Schaefer    */
164d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
1659853743705603e0b5214e5995bea8c9267708813Dave Schaefer    public TestAccessPointBuilder setReachable(boolean reachable) {
1669853743705603e0b5214e5995bea8c9267708813Dave Schaefer        if (reachable) {
1679853743705603e0b5214e5995bea8c9267708813Dave Schaefer            // only override the mRssi if it hasn't been set yet
1689853743705603e0b5214e5995bea8c9267708813Dave Schaefer            if (mRssi == AccessPoint.UNREACHABLE_RSSI) {
1699853743705603e0b5214e5995bea8c9267708813Dave Schaefer                mRssi = MIN_RSSI;
1709853743705603e0b5214e5995bea8c9267708813Dave Schaefer            }
1719853743705603e0b5214e5995bea8c9267708813Dave Schaefer        } else {
1729853743705603e0b5214e5995bea8c9267708813Dave Schaefer            mRssi = AccessPoint.UNREACHABLE_RSSI;
1739853743705603e0b5214e5995bea8c9267708813Dave Schaefer        }
1749853743705603e0b5214e5995bea8c9267708813Dave Schaefer        return this;
1759853743705603e0b5214e5995bea8c9267708813Dave Schaefer    }
1769853743705603e0b5214e5995bea8c9267708813Dave Schaefer
177d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
1789853743705603e0b5214e5995bea8c9267708813Dave Schaefer    public TestAccessPointBuilder setSaved(boolean saved){
1799853743705603e0b5214e5995bea8c9267708813Dave Schaefer        if (saved) {
18096a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman             mNetworkId = 1;
1819853743705603e0b5214e5995bea8c9267708813Dave Schaefer        } else {
18296a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman             mNetworkId = WifiConfiguration.INVALID_NETWORK_ID;
1839853743705603e0b5214e5995bea8c9267708813Dave Schaefer        }
1849853743705603e0b5214e5995bea8c9267708813Dave Schaefer        return this;
1859853743705603e0b5214e5995bea8c9267708813Dave Schaefer    }
1869853743705603e0b5214e5995bea8c9267708813Dave Schaefer
187d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
188ce6b0b2539dbb562b5c0e720d51bd3d35af437cfSundeep Ghuman    public TestAccessPointBuilder setSecurity(int security) {
189ce6b0b2539dbb562b5c0e720d51bd3d35af437cfSundeep Ghuman        mSecurity = security;
190ce6b0b2539dbb562b5c0e720d51bd3d35af437cfSundeep Ghuman        return this;
191ce6b0b2539dbb562b5c0e720d51bd3d35af437cfSundeep Ghuman    }
192ce6b0b2539dbb562b5c0e720d51bd3d35af437cfSundeep Ghuman
193d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
1949853743705603e0b5214e5995bea8c9267708813Dave Schaefer    public TestAccessPointBuilder setSsid(String newSsid) {
1959853743705603e0b5214e5995bea8c9267708813Dave Schaefer        ssid = newSsid;
1969853743705603e0b5214e5995bea8c9267708813Dave Schaefer        return this;
1979853743705603e0b5214e5995bea8c9267708813Dave Schaefer    }
198ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu
199d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
200ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu    public TestAccessPointBuilder setFqdn(String fqdn) {
201ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu        mFqdn = fqdn;
202ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu        return this;
203ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu    }
204ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu
205d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
206ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu    public TestAccessPointBuilder setProviderFriendlyName(String friendlyName) {
207ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu        mProviderFriendlyName = friendlyName;
208ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu        return this;
209ced37dba7b2ce04ea65a47273d5892ace90ac33cPeter Qiu    }
21096a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman
211d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
21296a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman    public TestAccessPointBuilder setWifiInfo(WifiInfo info) {
21396a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman        mWifiInfo = info;
21496a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman        return this;
21596a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman    }
21696a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman
21796a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman    /**
21896a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman     * Set the networkId in the WifiConfig.
21996a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman     *
22096a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman     * <p>Setting this to a value other than {@link WifiConfiguration#INVALID_NETWORK_ID} makes this
22196a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman     * AccessPoint a saved network.
22296a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman     */
223d1dcfd1dc05380864c3ed57a1519e260b91635f1Antony Sargent    @Keep
22496a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman    public TestAccessPointBuilder setNetworkId(int networkId) {
22596a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman        mNetworkId = networkId;
22696a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman        return this;
22796a53579088a21590cb02e5befc88ef965520d3eSundeep Ghuman    }
2287c32aa3039fd9eba3c09f7503ac451a0ba0b1d87Sundeep Ghuman
2297c32aa3039fd9eba3c09f7503ac451a0ba0b1d87Sundeep Ghuman    public TestAccessPointBuilder setBssid(String bssid) {
2307c32aa3039fd9eba3c09f7503ac451a0ba0b1d87Sundeep Ghuman        mBssid = bssid;
2317c32aa3039fd9eba3c09f7503ac451a0ba0b1d87Sundeep Ghuman        return this;
2327c32aa3039fd9eba3c09f7503ac451a0ba0b1d87Sundeep Ghuman    }
233a28050ae42edb487239d9800b173ea334981f2b5Sundeep Ghuman
23404f7f34a713062ec3fd54a4c19481e9f76819899Sundeep Ghuman    public TestAccessPointBuilder setScanResults(ArrayList<ScanResult> scanResults) {
23504f7f34a713062ec3fd54a4c19481e9f76819899Sundeep Ghuman        mScanResults = scanResults;
236a28050ae42edb487239d9800b173ea334981f2b5Sundeep Ghuman        return this;
237a28050ae42edb487239d9800b173ea334981f2b5Sundeep Ghuman    }
238280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu
239280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu    public TestAccessPointBuilder setIsCarrierAp(boolean isCarrierAp) {
240280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu        mIsCarrierAp = isCarrierAp;
241280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu        return this;
242280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu    }
243280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu
244280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu    public TestAccessPointBuilder setCarrierName(String carrierName) {
245280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu        mCarrierName = carrierName;
246280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu        return this;
247280581b1053f9a52457a7a9b8873bc6fef1b5472Peter Qiu    }
248fedf4617894ec75d972bbc681b3c64ef8914b980Sundeep Ghuman
249fedf4617894ec75d972bbc681b3c64ef8914b980Sundeep Ghuman    public TestAccessPointBuilder setScoredNetworkCache(
250fedf4617894ec75d972bbc681b3c64ef8914b980Sundeep Ghuman            ArrayList<TimestampedScoredNetwork> scoredNetworkCache) {
251fedf4617894ec75d972bbc681b3c64ef8914b980Sundeep Ghuman        mScoredNetworkCache = scoredNetworkCache;
252fedf4617894ec75d972bbc681b3c64ef8914b980Sundeep Ghuman        return this;
253fedf4617894ec75d972bbc681b3c64ef8914b980Sundeep Ghuman    }
2549853743705603e0b5214e5995bea8c9267708813Dave Schaefer}
255