Home | History | Annotate | Download | only in wifi
      1 /*
      2  * Copyright (C) 2016 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.server.wifi;
     18 
     19 import android.net.wifi.WifiConfiguration;
     20 import android.net.wifi.WifiEnterpriseConfig;
     21 
     22 /**
     23  * Helper for creating and populating WifiConfigurations in unit tests.
     24  */
     25 public class WifiConfigurationTestUtil {
     26     /**
     27      * These values are used to describe AP's security setting. One AP can support multiple of them,
     28      * only if there is no conflict.
     29      */
     30     public static final int SECURITY_NONE = 0;
     31     public static final int SECURITY_WEP =  1 << 0;
     32     public static final int SECURITY_PSK =  1 << 1;
     33     public static final int SECURITY_EAP =  1 << 2;
     34 
     35     /**
     36      * Construct a {@link android.net.wifi.WifiConfiguration}.
     37      * @param networkId the configuration's networkId
     38      * @param uid the configuration's creator uid
     39      * @param ssid the configuration's ssid
     40      * @param shared whether the configuration is shared with other users on the device
     41      * @param enabled whether the configuration is enabled
     42      * @param fqdn the configuration's FQDN (Hotspot 2.0 only)
     43      * @param providerFriendlyName the configuration's provider's friendly name (Hotspot 2.0 only)
     44      * @return the constructed {@link android.net.wifi.WifiConfiguration}
     45      */
     46     public static WifiConfiguration generateWifiConfig(int networkId, int uid, String ssid,
     47             boolean shared, boolean enabled, String fqdn, String providerFriendlyName) {
     48         final WifiConfiguration config = new WifiConfiguration();
     49         config.SSID = ssid;
     50         config.networkId = networkId;
     51         config.creatorUid = uid;
     52         config.shared = shared;
     53         config.status = enabled ? WifiConfiguration.Status.ENABLED
     54                 : WifiConfiguration.Status.DISABLED;
     55         if (fqdn != null) {
     56             config.FQDN = fqdn;
     57             config.providerFriendlyName = providerFriendlyName;
     58             config.enterpriseConfig.setEapMethod(WifiEnterpriseConfig.Eap.SIM);
     59         }
     60         return config;
     61     }
     62 
     63     /**
     64      * Construct a {@link android.net.wifi.WifiConfiguration}.
     65      * @param networkId the configuration's networkId
     66      * @param uid the configuration's creator uid
     67      * @param ssid the configuration's ssid
     68      * @param shared whether the configuration is shared with other users on the device
     69      * @param enabled whether the configuration is enabled
     70      * @param fqdn the configuration's FQDN (Hotspot 2.0 only)
     71      * @param providerFriendlyName the configuration's provider's friendly name (Hotspot 2.0 only)
     72      * @param security the configuration's security type
     73      * @return the constructed {@link android.net.wifi.WifiConfiguration}
     74      */
     75     public static WifiConfiguration generateWifiConfig(int networkId, int uid, String ssid,
     76             boolean shared, boolean enabled, String fqdn, String providerFriendlyName,
     77             int security) {
     78         WifiConfiguration config = generateWifiConfig(networkId, uid, ssid, shared, enabled, fqdn,
     79                 providerFriendlyName);
     80 
     81         if (security == SECURITY_NONE) {
     82             config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
     83         } else {
     84             if (((security & SECURITY_WEP) != 0) || ((security & SECURITY_PSK) != 0)) {
     85                 config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
     86             }
     87 
     88             if ((security & SECURITY_EAP) != 0) {
     89                 config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_EAP);
     90                 config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.IEEE8021X);
     91             }
     92         }
     93         return config;
     94     }
     95 }
     96